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

📄 gstsegment.c

📁 gnash 在pc和嵌入式下开发需要的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
  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;  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_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_running_time (&segment, GST_FORMAT_TIME, 100);  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);  /* outside of the segment */  result = gst_segment_to_running_time (&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_full (&segment, FALSE, 2.0, 1.0,      GST_FORMAT_TIME, 0, 200, 500);  /* normal speed gives elapsed of 200 */  fail_unless (segment.accum == 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_running_time (&segment, GST_FORMAT_TIME, 100);  fail_unless (result == 250);  /* outside of the segment */  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 500);  fail_unless (result == -1);  /********************************************   * time offset by 500   * applied rate is not used for running time   ********************************************/  gst_segment_set_newsegment_full (&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.accum == 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_running_time (&segment, GST_FORMAT_TIME, 500);  fail_unless (result == 300);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 600);  fail_unless (result == 400);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 700);  fail_unless (result == 500);  /* outside of the segment */  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 800);  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_full (&segment, FALSE, -1.0, 1.0,      GST_FORMAT_TIME, 500, 700, 200);  fail_unless (segment.accum == 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_running_time (&segment, GST_FORMAT_TIME, 500);  fail_unless (result == 700);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 600);  fail_unless (result == 600);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 700);  fail_unless (result == 500);  /* outside of the segment */  result = gst_segment_to_running_time (&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_full (&segment, FALSE, -2.0, -2.0,      GST_FORMAT_TIME, 500, 700, 200);  fail_unless (segment.accum == 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);  /* 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_running_time (&segment, GST_FORMAT_TIME, 600);  fail_unless (result == 750);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 700);  fail_unless (result == 700);  /* outside of the segment */  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 800);  fail_unless (result == -1);  /* see if negative rate closed segment correctly */  gst_segment_set_newsegment_full (&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.accum == 800);}GST_END_TEST;/* mess with the segment structure in the time format */GST_START_TEST (segment_newsegment_accum){  GstSegment segment;  gint64 result;  gst_segment_init (&segment, GST_FORMAT_TIME);  /***************************   * Normal reverse 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_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_running_time (&segment, GST_FORMAT_TIME, 150);  fail_unless (result == 50);  /* update segment, this accumulates 50 from the previous segment. */  gst_segment_set_newsegment_full (&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.accum == 50);  fail_unless (segment.last_stop == 0);  fail_unless (segment.duration == -1);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);  fail_unless (result == 50);  /* 50 accumulated + 50 / 2 */  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 100);  fail_unless (result == 75);  /* update segment, this does not accumulate anything. */  gst_segment_set_newsegment_full (&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.accum == 50);  fail_unless (segment.last_stop == 100);  fail_unless (segment.duration == -1);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 100);  fail_unless (result == 50);  result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);  fail_unless (result == 100);}GST_END_TEST;/* mess with the segment structure in the time format */GST_START_TEST (segment_newsegment_accum2){  GstSegment segment;  gint64 result;  gst_segment_init (&segment, GST_FORMAT_TIME);  /***************************   * Normal reverse 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_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_running_time (&segment, GST_FORMAT_TIME, 150);  fail_unless (result == 50);  /* close segment, this accumulates nothing. */  gst_segment_set_newsegment_full (&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.accum == 0);  fail_unless (segment.last_stop == 150);  fail_unless (segment.duration == -1);  /* new segment, this accumulates 50. */  gst_segment_set_newsegment_full (&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.accum == 50);  fail_unless (segment.last_stop == 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_running_time (&segment, GST_FORMAT_TIME, 200);  fail_unless (result == 100);}GST_END_TEST;Suite *gst_segment_suite (void){  Suite *s = suite_create ("GstSegment");  TCase *tc_chain = tcase_create ("segments");  tcase_set_timeout (tc_chain, 20);  suite_add_tcase (s, tc_chain);  tcase_add_test (tc_chain, segment_seek_nosize);  tcase_add_test (tc_chain, segment_seek_size);  tcase_add_test (tc_chain, segment_seek_reverse);  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);  return s;}GST_CHECK_MAIN (gst_segment);

⌨️ 快捷键说明

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