I'm work for H264 compression based on UMC. I use AdvancedThreadDemuxer and H264VideoDecoder decode for H264 images decode. For now, It works fine for continuous playback.
I would like to do some advance playback operations not only one by one. For example Fast playback,back playback anddisplay one frame by index. Can I do that? If so, Can you give me some ideas?If not, can you give me other choise?
I am very interested in this topic too.
It would be relatively easy if we have only short closed GOPs, but if we get long closed GOPs or open GOPs, I don't know how to use H264Decoder to support fastforward or fastbackward. Can Intel give any guide about it? Thanks.
there is our expert comment on this:
You can use SetRate(Ipp64f newPlaybackRate) to play fast forward or backward (negative playback rate). Note that UMC splitters do not correct timestamps, you will need to stretch or shrink them.
Displaying one frame by index requires some info about all frames with position in file where splitter should start from. If you have such info (so-called index) you can try to do the following:
move DataReader to the certain frame position
Thats the very basic idea. There are a lot of difficulties with MPEG2 container when you want to access particular frame.
Probably it will be better way to use non-threaded mpeg2 demuxer here. Then you wont need to Stop and Run it at every frame.
Thank you your Help. But I still have problem when Isetposition and then GetNextData(), I get UMC_ERR_NOT_ENOUGH_DATAerror. I think the frame is p-frame,I should set new position until find I-frame?
By the way, the Demuxer is non-thread mpeg2 demuxer?
I having difficulty implenenting scrolling of the video using the simple_player application. How can I get to a specific frame on the video and paint etc. can you help?