List Info

Thread: hxrecordengine (Superbuffer) info.




hxrecordengine (Superbuffer) info.
country flaguser name
United States
2007-12-27 02:47:39
This write-up is meant for discussion only.

The hxrecordengine (actually Superbuffer) module came from
the 
implementation in RealPlayer for Windows.
It appears to me to be 95% identical, except for a very few
number
of fixes that went in after this module was created 
and the the following changes:

o The few recording blocks were removed.
  I think those blocks handle 
  the Simultaneous Play/Record functionality 
  that converts buffered content to a single output file.
  Supposedly, this was done to create a new module that was

  Superbuffer-centric.

o Superbuffer enabling and disabling mechanism was changed
  from: 
    using Preference (LiveSuperBuffer & ODSuperBuffer --
not 
    OnDemandSuperBuffer!) in RecordService's 
    OpenSession() call
  to:
    hxclientkit's EnableSuperBuffer(bool enable).

  I think the intention was to simplify and reduce enabling
and 
  disabling of LivePause and OnDemand Superbuffering to a
unified, 
  single function call.

  In the original version, the RecordService is running even
when 
  both Live and OnDemand Superbuffering is disabled because
it is 
  needed for recording.

  However, in this hxrecordengine, EnableSuperBuffer(false)
would 
  actually ask the RecordManager to unload hxrecordengine.so
-- 
  but if the playback is underway, client core's reference
to it 
  might defer unloading to after playback is done.

  With hxrecordengine.so unloaded, its interference on the
client's 
  playback process, if any, is stopped.

o hxrecordengine's GetSeekRange() outputs buffered range
that can
  be seeked without rebuffering.

  I suspect that hxclientkit's GetSeekRange() redefines the
meaning 
  of the function to be outputing the entire seekable range

  including timeline position that isn't buffered and can
trigger
  rebuffering.

  hxclientkit also defines GetBufferedRange() which appears
to 
  be intended to provide buffered range as minPosition and 
  writePosition, but also provide MaxPosition, I think, as 
  Max Timeline Position set by
SetPreferredSuperBufferSize().

  It is possible that hxclientkit's version of
GetSeekRange() and
  its GetBufferedRange() in combination can be used to
define the
  interesting timeline positions of Superbuffer, I find it
less 
  confusing to keep the original meaning of GetSeekRange()
as 
  Superbuffered range and use it to output all interesting
  timeline positions in one function with clearly named and
commented
  function arguments.


-- 
Daniel Yek.


_______________________________________________
Player-dev mailing list
Player-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/play
er-dev

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )