~ubuntu-branches/ubuntu/feisty/gst-plugins-good0.10/feisty-security

« back to all changes in this revision

Viewing changes to ext/dv/gstdvdemux.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2006-12-21 21:12:15 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20061221211215-3uukkusokhe0nk4f
Tags: 0.10.5-0ubuntu1
* Sync with pkg-gstreamer SVN:
  + debian/rules:
    - Use Ubuntu as distribution name and point to the proper Launchpad URL
  + debian/patches/01_esdsink-priority.patch:
    - Mark the esdsink with rank primary-2 to get
      pulse > alsadmix > esd > alsa > oss

Show diffs side-by-side

added added

removed removed

Lines of Context:
306
306
  gst_pad_set_event_function (dvdemux->videosrcpad,
307
307
      GST_DEBUG_FUNCPTR (gst_dvdemux_handle_src_event));
308
308
  gst_pad_use_fixed_caps (dvdemux->videosrcpad);
 
309
  gst_pad_set_active (dvdemux->videosrcpad, TRUE);
309
310
  gst_element_add_pad (GST_ELEMENT (dvdemux), dvdemux->videosrcpad);
310
311
 
311
312
  dvdemux->audiosrcpad =
317
318
  gst_pad_set_event_function (dvdemux->audiosrcpad,
318
319
      GST_DEBUG_FUNCPTR (gst_dvdemux_handle_src_event));
319
320
  gst_pad_use_fixed_caps (dvdemux->audiosrcpad);
 
321
  gst_pad_set_active (dvdemux->audiosrcpad, TRUE);
320
322
  gst_element_add_pad (GST_ELEMENT (dvdemux), dvdemux->audiosrcpad);
321
323
 
322
324
  gst_element_no_more_pads (GST_ELEMENT (dvdemux));
1071
1073
    if ((stop = demux->time_segment.stop) == -1)
1072
1074
      stop = demux->time_segment.duration;
1073
1075
 
1074
 
    /* now send the newsegment */
1075
 
    GST_DEBUG_OBJECT (demux, "Sending newsegment from %" GST_TIME_FORMAT
1076
 
        " to %" GST_TIME_FORMAT, GST_TIME_ARGS (demux->time_segment.start),
1077
 
        GST_TIME_ARGS (stop));
1078
 
 
1079
 
    gst_dvdemux_push_event (demux,
1080
 
        gst_event_new_new_segment (FALSE,
1081
 
            demux->time_segment.rate, demux->time_segment.format,
1082
 
            demux->time_segment.last_stop, stop, demux->time_segment.time));
 
1076
    GST_INFO_OBJECT (demux,
 
1077
        "Saving newsegment event to be sent in streaming thread");
 
1078
 
 
1079
    if (demux->pending_segment)
 
1080
      gst_event_unref (demux->pending_segment);
 
1081
 
 
1082
    demux->pending_segment = gst_event_new_new_segment (FALSE,
 
1083
        demux->time_segment.rate, demux->time_segment.format,
 
1084
        demux->time_segment.last_stop, stop, demux->time_segment.time);
1083
1085
 
1084
1086
    demux->need_segment = FALSE;
1085
1087
  }
1491
1493
{
1492
1494
  GstDVDemux *dvdemux;
1493
1495
  GstFlowReturn ret;
 
1496
  GstClockTime timestamp;
1494
1497
 
1495
1498
  dvdemux = GST_DVDEMUX (gst_pad_get_parent (pad));
1496
1499
 
1500
1503
  if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)))
1501
1504
    gst_adapter_clear (dvdemux->adapter);
1502
1505
 
 
1506
  /* a timestamp always should be respected */
 
1507
  timestamp = GST_BUFFER_TIMESTAMP (buffer);
 
1508
  if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
 
1509
    gst_segment_set_last_stop (&dvdemux->time_segment, GST_FORMAT_TIME,
 
1510
        timestamp);
 
1511
    /* FIXME, adjust frame_offset and other counters */
 
1512
  }
 
1513
 
1503
1514
  /* temporary hack? Can't do this from the state change */
1504
1515
  if (G_UNLIKELY (!dvdemux->videosrcpad))
1505
1516
    gst_dvdemux_add_pads (dvdemux);
1610
1621
      }
1611
1622
    }
1612
1623
  }
 
1624
 
 
1625
 
 
1626
  if (G_UNLIKELY (dvdemux->pending_segment)) {
 
1627
 
 
1628
    /* now send the newsegment */
 
1629
    GST_DEBUG_OBJECT (dvdemux, "Sending newsegment from");
 
1630
 
 
1631
    gst_dvdemux_push_event (dvdemux, dvdemux->pending_segment);
 
1632
    dvdemux->pending_segment = NULL;
 
1633
  }
 
1634
 
1613
1635
  if (G_LIKELY (buffer == NULL)) {
1614
1636
    GST_DEBUG_OBJECT (dvdemux, "pulling buffer at offset %" G_GINT64_FORMAT,
1615
1637
        dvdemux->byte_segment.last_stop);
1770
1792
 
1771
1793
      event_p = &dvdemux->seek_event;
1772
1794
      gst_event_replace (event_p, NULL);
 
1795
      if (dvdemux->pending_segment)
 
1796
        gst_event_unref (dvdemux->pending_segment);
 
1797
      dvdemux->pending_segment = NULL;
1773
1798
      break;
1774
1799
    }
1775
1800
    default: