> How can I get access to pixel data (for reading) when being presented a 
> frame? I have the following:
> 
> class VideoSurface: public QAbstractVideoSurface {
> bool present(const QVideoFrame &frame) override {
>  // I can't map()  because frame is const and map() is not marked const
>  // and frame is not already mapped, so what can I do with it?
> }
> };


Having played with this further, I think something i wrong with Qt. I can't 
map() the frame even if I clone it (as found in various places on the web):
bool present(const QVideoFrame &frame) override {
QVideoFrame frame2(frame);
frame2.map(QAbstractVideoBuffer::ReadOnly); // this fails!
...

}

Even when I comment out all the frame logic except for a qDebug() and return 
true, there seems to be only one frame ever presented:

auto main(int, char **)::(anonymous 
class)::operator()(QMediaPlayer::MediaStatus) const QMediaPlayer::LoadingMedia
auto main(int, char **)::(anonymous class)::operator()(const 
QMediaPlayer::State &) const QMediaPlayer::PlayingState
auto main(int, char **)::(anonymous 
class)::operator()(QMediaPlayer::MediaStatus) const QMediaPlayer::BufferedMedia
virtual bool VideoSurface::start(const QVideoSurfaceFormat &)
virtual bool VideoSurface::present(const QVideoFrame &) 0 true (frameNumber, 
frame.iValid())
... 23 seconds later...
auto main(int, char **)::(anonymous 
class)::operator()(QMediaPlayer::MediaStatus) const QMediaPlayer::EndOfMedia
virtual void VideoSurface::stop()
auto main(int, char **)::(anonymous class)::operator()(const 
QMediaPlayer::State &) const QMediaPlayer::StoppedState

The video is an MP4 file from disk, 23 seconds long 71MB, I should have ~690 
present() invocations.

Any help is appreciated!
_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to