Hi Dave I'm currently trying to implement an app that is sitting on top of the PVPlayer, looks like I need to pass an ISurface instance when calling setVideoSurface in order to be able to render video, it also looks liken this is being created in the upper layers and just being passed down. Is there a way to instantiate ISurface at the middleware level?
thx MR On Jan 22, 10:40 pm, Dave Sparks <[email protected]> wrote: > 1.ISurfaceis the remote interface for SurfaceFlinger. When you call > anISurfacemethod like postBuffer, you are executing an RPC in > SurfaceFlinger. There is only one way to render 2D graphics through > the window system and that is using SurfaceFlinger. In the future, you > could use the overlay interface, but that is aimed more at hardware > pipelined video rather than software rendering. > > 2. ashmem and pmem are very similar. Both are used for sharing memory > between processes. ashmem uses virtual memory, whereas pmem uses > physically contiguous memory. One big difference is that with ashmem, > you have a ref-counted object that can be shared equally between > processes. For example, if two processes are sharing an ashmem memory > buffer, the buffer reference goes away when both process have removed > all their references by closing all their file descriptors. pmem > doesn't work that way because it needs to maintain a physical to > virtual mapping. This requires the process that allocates a pmem heap > to hold the file descriptor until all the other references are closed. > > 3. You have the right idea for using shared memory. The choice between > ashmem and pmem depends on whether you need physically contiguous > buffers. In the case of the G1, we use the hardware 2D engine to do > scaling, rotation, and color conversion, so we use pmem heaps. The > emulator doesn't have a pmem driver and doesn't really need one, so we > use ashmem in the emulator. If you use ashmem on the G1, you lose the > hardware 2D engine capability, so SurfaceFlinger falls back to its > software renderer which does not do color conversion, which is why you > see the monochrome image. > > On Jan 22, 8:46 pm, iblues <[email protected]> wrote: > > > Hi Dave, > > > I was able to display the YUV frame onto theISurface. But as you had > > mentioned, the emulator is considering only the Y-data and displaying > > a gray-scale video. I just have few clarifications from my above > > exercise : > > > 1. In most of the posts and also in the source code, whenever we talk > > to posting to the display, all talk of Surface Flinger whereas the > > Camera and the Media Player usesISurfaceto render the display images > > onto the screen. I also see the implementation of the Surface Flinger > > to be more of a wrapper to theISurface. Which of these objects would > > you recommend to be used for real-time rendering of YUV data? > > > 2. I seem to not to understand the difference between ashmemory and > > pmem memory. Can you point out some overall differences between the > > same? > > > 3. In my requirement, I would have a native library A render the YUV > > frames and map it to a Memory Heap. If another library say B wants to > > have access to this memory heap , as per my understanding, I will have > > to wrap the memory heap into IMemory and pass the same via a callback > > from A to B right? If so, should my memory heap type be ashmem or > > pmem? > > > Please correct me if my understandings are wrong anywhere. > > > Regards, > > Syed Ibrahim M > > > -------------------------- > > > On Jan 22, 12:33 am, Dave Sparks <[email protected]> wrote: > > > > Yes, you need to make your class a friend of SurfaceHolder. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "android-framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-framework?hl=en -~----------~----~----~----~------~----~------~--~---
