History log of /haiku/src/apps/mediaplayer/media_node_framework/video/VideoProducer.h
Revision Date Author Comments
# 892e4f21 15-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Changed the VideoSupplier interface to allow forcing the
video generation. This allows step back frame-wise even though
it means the video has to seeked back far and re-generated more
than five frames ahead to reach the seek frame.
* Don't print dropped frames in the producer when the video
is paused.
* Don't lock the PlaybackManager to report dropped frames,
report it later when the manager had to be locked anyway.
* Removed a whole bunch of methods that were only implemened
because of that old BeOS PPC compiler bug.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38670 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f7eb8be9 15-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Instead of using some bogus latency for the VideoProducer,
compute the latency from the buffer count. It should be
the duration of in-flight buffers (i.e. number of buffers
minus the one currently showing).
* Compute the wakeUp time based on the buffer latency used
above.
* Make the "wasCached" mechanism work again, i.e. don't send
the buffer to the consumer if the contents did not change.
This removes the need to cache frames in the ProxyVideoSupplier
and thus one more memcpy() (5ms on my Q6600 for full-HD content).
* Remove the weird forceSendingBuffer override and the setting
of the header starttime to 0. Now seeking clips works also
when the playback is paused.

All in all, playback is more efficient now, and the chances of
dropping frames are much less. Something is still fishy, though,
since VLC, even though seemingly using slightly more CPU, drops
frames more seldomly than MediaPlayer. Audio/Video sync seems to
be better, though, since the VideoProducer is using a more accurate
latency now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38662 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0fc56ed5 30-May-2008 Stephan Aßmus <superstippi@gmx.de>

* Moved a bunch of non-primary interface classes into a new subfolder
"interface"

* Complete reimplementation of the playback engine using Media Nodes:
- Seeking video files does not appear to lockup the playback anymore, but
works on a frame accurate level even for keyframe based streams. There is
currently a problem with certain container formats, the audio track reports
a "Device Seek Error" in certain conditions. In that case audio goes silent,
and can be restarted by going back to the beginnings of the stream.
- Video overlays are now supported.
- It would be possible to connect the output of the MediaPlayer to other
applications or dormant media nodes.

* Known regressions:
- The volume slider has currently no effect anymore.
- Switching the audio track during playback has a known race condition and
can crash the player.
- The new engine is not as "light weight" as the old one. I tagged the
previous implementation in tags/components/mediaplayer-engine-v1. It does
not seem to have any noticable effect though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25725 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 892e4f21be74818d65a85f3ee76b07b51e814d46 15-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Changed the VideoSupplier interface to allow forcing the
video generation. This allows step back frame-wise even though
it means the video has to seeked back far and re-generated more
than five frames ahead to reach the seek frame.
* Don't print dropped frames in the producer when the video
is paused.
* Don't lock the PlaybackManager to report dropped frames,
report it later when the manager had to be locked anyway.
* Removed a whole bunch of methods that were only implemened
because of that old BeOS PPC compiler bug.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38670 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f7eb8be9304cecb1575b1aa244aa39243c15bf17 15-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Instead of using some bogus latency for the VideoProducer,
compute the latency from the buffer count. It should be
the duration of in-flight buffers (i.e. number of buffers
minus the one currently showing).
* Compute the wakeUp time based on the buffer latency used
above.
* Make the "wasCached" mechanism work again, i.e. don't send
the buffer to the consumer if the contents did not change.
This removes the need to cache frames in the ProxyVideoSupplier
and thus one more memcpy() (5ms on my Q6600 for full-HD content).
* Remove the weird forceSendingBuffer override and the setting
of the header starttime to 0. Now seeking clips works also
when the playback is paused.

All in all, playback is more efficient now, and the chances of
dropping frames are much less. Something is still fishy, though,
since VLC, even though seemingly using slightly more CPU, drops
frames more seldomly than MediaPlayer. Audio/Video sync seems to
be better, though, since the VideoProducer is using a more accurate
latency now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38662 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0fc56ed57bdd5d2d44f33edd17d94210704613bd 30-May-2008 Stephan Aßmus <superstippi@gmx.de>

* Moved a bunch of non-primary interface classes into a new subfolder
"interface"

* Complete reimplementation of the playback engine using Media Nodes:
- Seeking video files does not appear to lockup the playback anymore, but
works on a frame accurate level even for keyframe based streams. There is
currently a problem with certain container formats, the audio track reports
a "Device Seek Error" in certain conditions. In that case audio goes silent,
and can be restarted by going back to the beginnings of the stream.
- Video overlays are now supported.
- It would be possible to connect the output of the MediaPlayer to other
applications or dormant media nodes.

* Known regressions:
- The volume slider has currently no effect anymore.
- Switching the audio track during playback has a known race condition and
can crash the player.
- The new engine is not as "light weight" as the old one. I tagged the
previous implementation in tags/components/mediaplayer-engine-v1. It does
not seem to have any noticable effect though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25725 a95241bf-73f2-0310-859d-f6bbb57e9c96