1. 13 Aug, 2013 3 commits
    • Thiago Santos's avatar
      dataqueue: add gst_data_queue_push_force · 581c4297
      Thiago Santos authored
      Adds a variant of the _push function that doesn't check the queue limits
      before adding the new item. It is useful when pushing an element to the
      queue shouldn't lock the thread.
      
      One particular scenario is when the queue is used to serialize buffers
      and events that are going to be pushed from another thread. The
      dataqueue should have a limit on the amount of buffers to be stored to
      avoid large memory consumption, but events can be considered to have
      negligible impact on memory compared to buffers. So it is useful to be
      used to push items into the queue that contain events, even though the
      queue is already full, it shouldn't matter inserting an item that has
      no significative size.
      
      This scenario happens on adaptive elements (dashdemux / mssdemux) as
      there is a single download thread fetching buffers and putting into the
      dataqueues for the streams. This same download thread can als generate
      events in some situations as caps changes, eos or a internal control
      events. There can be a deadlock at preroll if the first buffer fetched
      is large enough to fill the dataqueue and the download thread and the
      next iteration of the download thread decides to push an event to this
      same dataqueue before fetching buffers to other streams, if this push
      locks, the pipeline will be stuck in preroll as no more buffers will be
      downloaded.
      There is a somewhat common practice in dash streams to have a single
      very large buffer for audio and one for video, so this will always
      happen as the download thread will have to push an EOS right after
      fetching the first buffer for any stream.
      
      API: gst_data_queue_push_force
      
      https://bugzilla.gnome.org/show_bug.cgi?id=705694
      581c4297
    • Sebastian Dröge's avatar
    • Tim-Philipp Müller's avatar
  2. 12 Aug, 2013 3 commits
  3. 10 Aug, 2013 2 commits
  4. 08 Aug, 2013 1 commit
    • Adrian Pardini's avatar
      controller: fixes int overflow with properties that span +-INT_MAX · d4f6c8e0
      Adrian Pardini authored
      When the range for a property is defined as -INT_MAX-1 .. INT_MAX, like
      the xpos in a videomixer the following expression in the macro
      definitions of convert_g_value_to_##type (and the equivalent in
      convert_value_to_##type)
      
      v = pspec->minimum + (g##type) ROUNDING_OP ((pspec->maximum - pspec->minimum) * s);
      
      are converted to:
      
      v = -2147483648 + (g##type) ROUNDING_OP ((2147483647 - -2147483648) * s);
      
      (2147483647 - -2147483648) overflows to -1 and the net result is:
      
      v = -2147483648 + (g##type) ROUNDING_OP (-1 * s);
      
      so v only takes the values -2147483648 for s == 0 and 2147483647
      for s == 1.
      
      Rewriting the expression as minimum*(1-s) + maximum*s gives the correct
      result in this case.
      
      https://bugzilla.gnome.org//show_bug.cgi?id=705630
      d4f6c8e0
  5. 02 Aug, 2013 2 commits
  6. 31 Jul, 2013 1 commit
  7. 30 Jul, 2013 3 commits
  8. 29 Jul, 2013 10 commits
  9. 26 Jul, 2013 2 commits
  10. 25 Jul, 2013 1 commit
  11. 24 Jul, 2013 5 commits
  12. 23 Jul, 2013 3 commits
  13. 22 Jul, 2013 4 commits