[Libav-user] n00b question : decompressing into a contiguous pixmap

"René J.V. Bertin" rjvbertin at gmail.com
Mon Jan 28 12:17:34 CET 2013

Hello list,

I'm looking for some pointers/explanation/help on how to decompress, say mp4v, content into a contiguous pixmap expected by a 3rd party multimedia framework. After being informed of the movie's width, height and depth, the framework provides me with a destination baseAdr and a rowBytes value, describing a contiguous pixmap of size height * rowBytes, in which the decoded pixels are stored without inter-pixel or inter-line padding (except for possibly a few empty bits at the end of each line). The pixel format is clearly RGBA or ARGB.

I am working from code using an *old* libavcodec that invokes functions no longer existing as such in the current ffmpeg version, apparently in part to complete the compressed/input frame in case the framework didn't provide it completely.
This helped me to whip up something that works for some content (h.264 doesn't appear to require anything but a call to avcoded_decode_video2).

So I tried to follow the flow in ffplay, thinking it ought to be doing something comparable to my task. Sadly ffplay.c contains little to no useful comments to explain why it does what it does and its multithreaded nature doesn't make debugging it any easier.

Can anyone provide me with some constructive feedback, pointers, explanations, help, whatever? The basic question appears to be:

"What should I do after (or before?!) calling avcodec_decode_video2 to receive the decoded picture frame in a pixmap of the format described above?"

I should point out that I'm quite new to this level of video processing, and I do not even have good documentation or tutorial describing decoder plugins for the multimedia framework in question. So delving into the history of ffmpeg's evolution to figure out how to replace the fossil APIs used by the old plugin wouldn't get me far, I'm afraid.

I've made the code I'm working on available via github.com/RJVB/FFusion .

Thanks in advance!

More information about the Libav-user mailing list