[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