[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-player-dev
Subject:    [Player-dev] Adding QuickSeek() a.k.a. frame srubbing support to
From:       Daniel Yek <dyek () real ! com>
Date:       2007-05-02 20:02:45
Message-ID: 6.2.1.2.2.20070502125613.206d2d20 () mailone ! real ! com
[Download RAW message or body]

I don't find a Resume() function in IHXPlayer. I suppose it is another 
function; Begin()?

hxclientkit calls Pause() when drag starts, and appears to call Begin() at 
the end.

Pls. There is a bug in the core if the slider is dragged all the way to the 
end of the slider, where it crashed. It could be attempting to *decode* 
pass the end.


-- 
Daniel Yek


At 12:48 PM 5/2/2007, Greg Wright wrote:
>Just to make sure, when you are frame scrubbing you need to
>make sure the core gets calls like:
>
>Pause()
>QuickSeek()
>QuickSeek()
>QuickSeek()
>...
>...
>QuickSeek()
>Resume()
>
>
>that is, calling quickseek() if the player is not paused is
>bad, it will internally call pause() and then resume() for
>each call to quickseek().
>
>--greg.
>
>
>
>Daniel Yek wrote:
>>Modified by: dyek@real.com
>>Date: 5/2/2007
>>Project: Helix Player
>>Synopsis: Adding QuickSeek() a.k.a. frame srubbing support to hxclientkit
>>Overview:
>>   Added QuickSeek() support, from Greg's work, in hxclientkit
>>   (and automatically, in TLC/players.)
>>   This enables players to show video frames as the user drag the position
>>   slider around.
>>   It is similar to DVD fast-forwarding.
>>   (Borrowing and adapting from Greg's description of it.)
>>   Changes are contained within and limited to hxclientkit.
>>   Seeking is done on the Helix client core by calling Seek(), in a number
>>   of presentation playback state.
>>   hxclientkit transformed the seek model to the following:
>>   (1) Seek by grabbing slider thumb and dragging it.
>>     hxclientkit called this "ActivelySeeking".
>>     Done by calling these functions:
>>       ClientPlayerStartSeeking(),
>>       ClientPlayerSetPosition()
>>       ClientPlayerStopSeeking().
>>   (2) Seek by clicking on slider trough and thus jumping to the position
>>     in one step.
>>     This would be the hxclientkit non-actively-seeking case.
>>     Done by calling just:
>>       ClientPlayerSetPosition() ~= m_pIHXCorePlayer->Seek()
>>   QuickSeek() is designed for case (1).
>>   hxclientkit was performing a single Seek() call at the end of case (1).
>>   With this change, hxclientkit is performing QuickSeek() "continuously",
>>   when the slider value changed.
>>   Ideally, the player should hook up "drag-begin" and "drag-end"
>>   GTK+ signals to perform
>>     ClientPlayerStartSeeking(),
>>     ClientPlayerStopSeeking()
>>   calls;
>>   Helix Player is currently hooking up the
>>     "button-press-event"
>>   and
>>     "button-release-event"
>>   signals, which prevented case (2) from happening.
>>   The side-effect is not very perceptible to the end user though.
>>   For media players using hxclientkit and
>>     ClientPlayerStartSeeking(),
>>     ClientPlayerStopSeeking()
>>   model, no code changes are needed to enable frame scrubbing --
>>   just recompile with the new hxclientkit.
>>
>>Files Modified:
>>   player/hxclientkit/src/CHXClientPlayer.cpp
>>   player/hxclientkit/src/CHXClientPlayer.h


_______________________________________________
Player-dev mailing list
Player-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/player-dev
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic