jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Video wall - OMX decoder limit

Mon Jan 25, 2016 12:52 am

Hello,

I am thinking about implementing a video wall using one/many Raspberry Pi and I would like to know how many h.264 videos it can decode concurrently.

I did a test using omxplayer with the --win flag and I could run nine videos concurrently, the 10th one would stay blank. It doesn't seem to be resolution dependent as I could run 9 x 1080p or 9 x 320p videos.

Is there a limit I could change? 16 concurrent videos would be great.

I am also thinking about chaining boards where the first one would decode 9 videos and encode the result back in h.264. In this case, I am limited at 8 decode and 1 encode. More than that would hang the PI itself.

If anyone is curious, I was using my node javascript wrapper for the test as it was way easier to populate that many components.
https://github.com/jean343/Node-OpenMAX ... es/Perf.ts

Thanks,

gkreidl
Posts: 5911
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 10:34 am

I don't believe that you can decode and display more than one 1080i/p video at at time. Two do work, but I get screen blankings every few seconds.
It heavily depends on resolution. I can decode and display 5-6 SD videos; with lower resolution more might be possible.
I can run my transcoder application with 1980i live video and display another 1080 video with omxplayer at the same time, so the decoder can at least decode two HD videos at the same time (but not display both).
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 12:58 pm

Thanks a lot for your reply.

To display more than one video 1080p, the GPU memory split has to be increased to 512MB and the number of input buffers (nBufferCountActual) of the video decoder has to be reduced from 20 to 1 in my case.

I could display 9 SD videos in omxplayer, but it really stops at 9, I would really like to increase that. Does anyone has the GPU code and can check where is the bottleneck and if it can be increased. I believe it can be increased because it can display 9 videos 1080p and no more than 9 videos 320 x 240.

I have made a small sample of what I have right now, it decodes 8 videos at 1080p, resize them then re-encode the result in h.264. It did that at 3FPS, but I'm not sure where the bottleneck is.
https://www.youtube.com/watch?v=La0PwXI2cXc

I'm trying to see if a Pi can make a video wall like the following
Image

gkreidl
Posts: 5911
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 2:12 pm

Did you compile a special version of omxplayer with a reduced number of input buffers?
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 2:32 pm

No, I used some code which I wrote. I believe changing omxplayer would not be too difficult.
Try increasing the gpu memory first.

I'm still looking on how to have more than nine videos.

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 2:46 pm

jean343 wrote:Thanks a lot for your reply.

To display more than one video 1080p, the GPU memory split has to be increased to 512MB and the number of input buffers (nBufferCountActual) of the video decoder has to be reduced from 20 to 1 in my case.

I could display 9 SD videos in omxplayer, but it really stops at 9, I would really like to increase that. Does anyone has the GPU code and can check where is the bottleneck and if it can be increased. I believe it can be increased because it can display 9 videos 1080p and no more than 9 videos 320 x 240.

I have made a small sample of what I have right now, it decodes 8 videos at 1080p, resize them then re-encode the result in h.264. It did that at 3FPS, but I'm not sure where the bottleneck is.
https://www.youtube.com/watch?v=La0PwXI2cXc

I'm trying to see if a Pi can make a video wall like the following
Image
What frame rate are you running at with 9x1080p, because I would have expected that to be impossible at 30fps, there simply isn't the HW horsepower to do that. Or, at least, I didn't think there was.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 2:54 pm

jamesh wrote:
jean343 wrote:Thanks a lot for your reply.

To display more than one video 1080p, the GPU memory split has to be increased to 512MB and the number of input buffers (nBufferCountActual) of the video decoder has to be reduced from 20 to 1 in my case.

I could display 9 SD videos in omxplayer, but it really stops at 9, I would really like to increase that. Does anyone has the GPU code and can check where is the bottleneck and if it can be increased. I believe it can be increased because it can display 9 videos 1080p and no more than 9 videos 320 x 240.

I have made a small sample of what I have right now, it decodes 8 videos at 1080p, resize them then re-encode the result in h.264. It did that at 3FPS, but I'm not sure where the bottleneck is.
https://www.youtube.com/watch?v=La0PwXI2cXc

I'm trying to see if a Pi can make a video wall like the following
Image
What frame rate are you running at with 9x1080p, because I would have expected that to be impossible at 30fps, there simply isn't the HW horsepower to do that. Or, at least, I didn't think there was.
And here I am answering my own question. Quick chat with some guys who worked on this, the decoder is measured in bits per second, which is irrelevent to resolution and frame rate. So, as long as all your streams when added up come to less than the max bitrate, it should work. ISTR that the max bitrate of the CV4 is about 40-50MBits/s, so that should be the upper limit.

However, if you are stopping dead at 9, that would imply a bottleneck elsewhere - there might be limited number of communication linked from ARM to the GPU. I'll need to get some help from elsewhere for that one.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 2:56 pm

That is a very valid question :)

For nine videos I got displayed
6.5 fps at 1080p
14 fps at 720p
35 fps at 480p

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 3:09 pm

jamesh wrote:
jamesh wrote:
jean343 wrote:Thanks a lot for your reply.

To display more than one video 1080p, the GPU memory split has to be increased to 512MB and the number of input buffers (nBufferCountActual) of the video decoder has to be reduced from 20 to 1 in my case.

I could display 9 SD videos in omxplayer, but it really stops at 9, I would really like to increase that. Does anyone has the GPU code and can check where is the bottleneck and if it can be increased. I believe it can be increased because it can display 9 videos 1080p and no more than 9 videos 320 x 240.

I have made a small sample of what I have right now, it decodes 8 videos at 1080p, resize them then re-encode the result in h.264. It did that at 3FPS, but I'm not sure where the bottleneck is.
https://www.youtube.com/watch?v=La0PwXI2cXc

I'm trying to see if a Pi can make a video wall like the following
Image
What frame rate are you running at with 9x1080p, because I would have expected that to be impossible at 30fps, there simply isn't the HW horsepower to do that. Or, at least, I didn't think there was.
And here I am answering my own question. Quick chat with some guys who worked on this, the decoder is measured in bits per second, which is irrelevent to resolution and frame rate. So, as long as all your streams when added up come to less than the max bitrate, it should work. ISTR that the max bitrate of the CV4 is about 40-50MBits/s, so that should be the upper limit.

However, if you are stopping dead at 9, that would imply a bottleneck elsewhere - there might be limited number of communication linked from ARM to the GPU. I'll need to get some help from elsewhere for that one.
Thanks so much James.

I am happy with the decoding speed and if you are indicating that I can get a greater speed by reducing the bandwidth that is great.

I really want to know how to decode more than 9. 17 would be awesome.
So far I got undefined error when loading the 10th decoder. In another try i got invalid port but I'm not setting up any tunnel

Thanks

gkreidl
Posts: 5911
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 3:16 pm

jamesh wrote: And here I am answering my own question. Quick chat with some guys who worked on this, the decoder is measured in bits per second, which is irrelevent to resolution and frame rate. So, as long as all your streams when added up come to less than the max bitrate, it should work. ISTR that the max bitrate of the CV4 is about 40-50MBits/s, so that should be the upper limit.

However, if you are stopping dead at 9, that would imply a bottleneck elsewhere - there might be limited number of communication linked from ARM to the GPU. I'll need to get some help from elsewhere for that one.
That explains why I can run my real time transcoder for HD TV streams and watch a HD movie at the same time: The bitrate of the HD TV streams is always below 20 MBit (peak value) and that's also true for my recorded TV streams.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 4:19 pm

James has just pinged me over this.

There's no limit that I'm aware of on the number of video_decode instances.
Are you doing this from a custom app, or multiple calls to omxplayer or similar? There is a limit to the number of clients of tvservice and similar, and omxplayer used to try fiddling with that IIRC. One pure IL app shouldn't have a problem.
You could try "vcgencmd set_logging level=0xc0" and "sudo vcdbg log msg" to get the logging from the IL layer. You can get the codec logging too but I can't remember the bitmask. "sudo vcdbg reloc" and "sudo vcdbg malloc" would show up if you're running out of memory, but I wouldn't expect that to happen at a hard 10th instance. (Actually out of malloc heap would be repeatable as it will be the same allocation size for every instance. State goes in the malloc heap, images in reloc).

(Now intrigued where the image has been taken from seeing as I used to work on the HA CCTV systems. It's harder to identify places now they've removed the video overlay from all the raw image streams!)
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 4:59 pm

6by9 wrote:James has just pinged me over this.

There's no limit that I'm aware of on the number of video_decode instances.
Are you doing this from a custom app, or multiple calls to omxplayer or similar? There is a limit to the number of clients of tvservice and similar, and omxplayer used to try fiddling with that IIRC. One pure IL app shouldn't have a problem.
You could try "vcgencmd set_logging level=0xc0" and "sudo vcdbg log msg" to get the logging from the IL layer. You can get the codec logging too but I can't remember the bitmask. "sudo vcdbg reloc" and "sudo vcdbg malloc" would show up if you're running out of memory, but I wouldn't expect that to happen at a hard 10th instance. (Actually out of malloc heap would be repeatable as it will be the same allocation size for every instance. State goes in the malloc heap, images in reloc).

(Now intrigued where the image has been taken from seeing as I used to work on the HA CCTV systems. It's harder to identify places now they've removed the video overlay from all the raw image streams!)
Thanks so much for the reply.
Wouldn't it be great to have a Pi power a CCTV system? Well, I'm trying :)

I will try your commands as soon as I can reach a Pi.

I tried to have 10 feeds by 2 means:
1 - open 10 instances of omxplayer with a different --win setting. It would display 9 videos then the last one would stay blank.
2- My omx javascript wrapper from https://github.com/jean343/Node-OpenMAX ... es/Perf.ts. All of the components are loaded in the same app instance. When loading the 10th component it would throw OMX_ErrorUndefined or OMX_ErrorPortsNotCompatible when running empty buffer.
I tried running 8 decoders and 1 encoder, it works fine. But when running 8 decoders and 2 encoders the entire Pi fails.

Thanks,

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 5:03 pm

In case 6x9 doesn't answer, he just sent me something that may help.
https://github.com/popcornmix/omxplayer ... player.cpp
look for m_BcmHost or tvservice - there are calls all over the place
to pick up on HDMI hotplug and the like. Don't need one of those per
instance.
It's those multiple occurrences that use up communication slots, until you hit the hard limit. So avoid doing more than one and you may be ablet o get closer to the goal!
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 5:10 pm

Might be better off trying hello_video instead of omxplayer as the simplest way to drop out tvservice.

You'll need to add in your own setup of the display region - should be a case of lifting from https://github.com/popcornmix/omxplayer ... o.cpp#L211 and https://github.com/popcornmix/omxplayer ... o.cpp#L836
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Mon Jan 25, 2016 5:26 pm

6by9 wrote:Might be better off trying hello_video instead of omxplayer as the simplest way to drop out tvservice.

You'll need to add in your own setup of the display region - should be a case of lifting from https://github.com/popcornmix/omxplayer ... o.cpp#L211 and https://github.com/popcornmix/omxplayer ... o.cpp#L836
I am not using omxplayer much as it uses 20 input buffers for the video decoder and that does limit the number of components.
I am really using my javascript node library which was based on ilclient then I removed the dependency to ilclient and am only using omx calls now. I am also using only 1 input buffer.
I understand that this might be harder to debug than plain c++, I will post a new github project with a hello_video based code which does 10 videos.

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Tue Jan 26, 2016 3:56 pm

I have modified the hello_video code to display 12 videos in different ROI. I set the nBufferCountActual as well.
Unfortunately, it only displays 9 then the rest mentions OMX_ErrorStreamCorrupt just after ilclient_enable_port_buffers and ilclient_change_component_state to executing.

Below is the code if you would like to try.
https://github.com/jean343/ConcurrentHelloVideo

It really stops at 9 components, how can I have lots of small resolution videos playing?

Thanks,

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Tue Jan 26, 2016 5:14 pm

Output from

Code: Select all

sudo vcdbg reloc
sudo vcdbg malloc
when you've just had the 9th fail and before you tear them all down?
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Tue Jan 26, 2016 6:16 pm

I ran the commands in another terminal and tried my best for the timing.

sudo vcdbg reloc

Code: Select all

Relocatable heap version 4 found at 0x1f000000
total space allocated is 492M, with 492M relocatable, 0 legacy and 0 offline
0 legacy blocks of size 2359296

free list at 0x3c89a3e0
441M free memory in 10 free block(s)
largest free block is 439M bytes

0x1f000000: free 439M
[ 110] 0x3a6aeb80: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3a6aec00, d3Rual) 'Vdec3 CDB'
0x3a7aeca0: free 1.1M
[  17] 0x3a8c5420: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3a8c5500, d3Rual) 'Vdec3 CDB'
0x3a9c5540: free 1.1M
[ 200] 0x3aadbcc0: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3aadbd00, d3Rual) 'Vdec3 CDB'
0x3abdbde0: free 23K
[ 284] 0x3abe1ac0: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3abe1b00, d3Rual) 'CABAC output'
[ 331] 0x3ac58ee0: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3ac58f00, d0Rual) 'Vdec3 Msgbuf'
[ 311] 0x3ac76ca0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3ac77000, d1ruAL) 'video_decodeRIL:image pool'
[  89] 0x3acf2560: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3acf2600, d3Rual) 'Vdec3 CDB'
0x3adf2680: free 15K
[  23] 0x3adf6100: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3adf6120, d1Rual) 'H264 dm_storage'
[ 156] 0x3ae30ac0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3ae31000, d1ruAL) 'video_decodeRIL:image pool'
[  49] 0x3aeac380: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3aead000, d1ruaL) 'video_decodeRIL:image pool'
[  79] 0x3af27c40: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3af28000, d1ruaL) 'video_decodeRIL:image pool'
[ 275] 0x3afa3500: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3afa4000, d1ruaL) 'video_decodeRIL:image pool'
[ 177] 0x3b01edc0: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3b01f000, d1ruaL) 'video_decodeRIL:image pool'
[ 310] 0x3b09a680: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b09b000, d1ruaL) 'video_decodeRIL:image pool'
[ 299] 0x3b115f40: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3b116000, d3Rual) 'CABAC output'
[   7] 0x3b18d360: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3b18d380, d0Rual) 'Vdec3 Msgbuf'
[  25] 0x3b1ab120: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3b1ab140, d1Rual) 'H264 dm_storage'
[  94] 0x3b1e5ae0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b1e6000, d1ruAL) 'video_decodeRIL:image pool'
[  40] 0x3b2613a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b262000, d1ruAL) 'video_decodeRIL:image pool'
[ 270] 0x3b2dcc60: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3b2dd000, d1ruaL) 'video_decodeRIL:image pool'
[  84] 0x3b358520: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3b359000, d1ruaL) 'video_decodeRIL:image pool'
[ 238] 0x3b3d3de0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b3d4000, d1ruaL) 'video_decodeRIL:image pool'
[  59] 0x3b44f6a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b450000, d1ruaL) 'video_decodeRIL:image pool'
[ 210] 0x3b4caf60: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3b4cb000, d1ruaL) 'video_decodeRIL:image pool'
[ 297] 0x3b546820: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3b546900, d3Rual) 'CABAC output'
[ 326] 0x3b5bdc40: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3b5bdc60, d0Rual) 'Vdec3 Msgbuf'
[  21] 0x3b5dba00: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3b5dba20, d1Rual) 'H264 dm_storage'
[ 115] 0x3b6163c0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b617000, d1ruAL) 'video_decodeRIL:image pool'
[ 272] 0x3b691c80: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b692000, d1ruAL) 'video_decodeRIL:image pool'
[ 155] 0x3b70d540: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b70e000, d1ruaL) 'video_decodeRIL:image pool'
[ 109] 0x3b788e00: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b789000, d1ruaL) 'video_decodeRIL:image pool'
[ 281] 0x3b8046c0: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3b805000, d1ruaL) 'video_decodeRIL:image pool'
[ 271] 0x3b87ff80: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3b880000, d1ruaL) 'video_decodeRIL:image pool'
[  92] 0x3b8fb840: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3b8fc000, d1ruaL) 'video_decodeRIL:image pool'
[ 113] 0x3b977100: used 477K (refcount 1 lock count 1, size   488192, align  256, data 0x3b977200, d3Rual) 'CABAC output'
[ 265] 0x3b9ee520: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3b9ee540, d0Rual) 'Vdec3 Msgbuf'
[  82] 0x3ba0c2e0: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3ba0c300, d1Rual) 'H264 dm_storage'
[ 306] 0x3ba46ca0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3ba47000, d1ruAL) 'video_decodeRIL:image pool'
[ 167] 0x3bac2560: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3bac3000, d1ruAL) 'video_decodeRIL:image pool'
[ 240] 0x3bb3de20: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3bb3e000, d1ruaL) 'video_decodeRIL:image pool'
[ 296] 0x3bbb96e0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3bbba000, d1ruaL) 'video_decodeRIL:image pool'
[ 172] 0x3bc34fa0: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3bc35000, d1ruaL) 'video_decodeRIL:image pool'
[  44] 0x3bcb0860: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3bcb1000, d1ruaL) 'video_decodeRIL:image pool'
[ 128] 0x3bd2c120: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3bd2d000, d1ruaL) 'video_decodeRIL:image pool'
[ 276] 0x3bda79e0: used 477K (refcount 1 lock count 1, size   488192, align  256, data 0x3bda7a00, d3Rual) 'CABAC output'
[  11] 0x3be1ee00: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3be1ee20, d0Rual) 'Vdec3 Msgbuf'
[ 139] 0x3be3cbc0: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3be3cbe0, d1Rual) 'H264 dm_storage'
[ 244] 0x3be77580: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3be78000, d1ruAL) 'video_decodeRIL:image pool'
[ 188] 0x3bef2e40: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3bef3000, d1ruAL) 'video_decodeRIL:image pool'
[ 169] 0x3bf6e700: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3bf6f000, d1ruaL) 'video_decodeRIL:image pool'
[  64] 0x3bfe9fc0: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3bfea000, d1ruaL) 'video_decodeRIL:image pool'
[ 223] 0x3c065880: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3c066000, d1ruaL) 'video_decodeRIL:image pool'
[  24] 0x3c0e1140: used 119K (refcount 1 lock count 1, size   122240, align   32, data 0x3c0e1160, d0Rual) 'Vdec3 Msgbuf'
[ 273] 0x3c0fef00: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3c0ff000, d3Rual) 'Vdec3 CDB'
[ 325] 0x3c1ff020: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c1ff040, d0Rual) 'H264 PPS'
[  19] 0x3c203480: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c2034a0, d0Rual) 'H264 SPS'
0x3c203d80: free 88K
[  50] 0x3c219ca0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3c21a000, d1ruaL) 'video_decodeRIL:image pool'
[ 254] 0x3c295560: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3c296000, d1ruaL) 'video_decodeRIL:image pool'
[ 158] 0x3c310e20: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3c310e40, d0Rual) 'Vdec3 Msgbuf'
[ 166] 0x3c32ebe0: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3c32ec00, d3Rual) 'Vdec3 CDB'
[ 294] 0x3c42ed00: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c42ed20, d0Rual) 'H264 PPS'
[ 319] 0x3c433160: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c433180, d0Rual) 'H264 SPS'
0x3c433a60: free 62K
[ 116] 0x3c4430c0: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c4430e0, d1rual) 'ilin mapping buffer'
[ 118] 0x3c444100: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3c444200, d3Rual) 'Vdec3 CDB'
[ 150] 0x3c544220: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3c544240, d0Rual) 'Vdec3 Msgbuf'
[  85] 0x3c561fe0: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3c562000, d3Rual) 'Vdec3 CDB'
[  46] 0x3c662100: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c662120, d0Rual) 'H264 PPS'
[ 305] 0x3c666560: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c666580, d0Rual) 'H264 SPS'
0x3c666e60: free 3.3K
[ 153] 0x3c667ba0: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c667bc0, d1rual) 'ilin mapping buffer'
[ 164] 0x3c668be0: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c668c00, d1rual) 'ilin mapping buffer'
[ 277] 0x3c669c20: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c669c40, d0Rual) 'H264 PPS'
[  81] 0x3c66e080: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c66e0a0, d0Rual) 'H264 SPS'
[ 309] 0x3c66e980: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c66e9a0, d1rual) 'ilin mapping buffer'
[ 220] 0x3c66f9c0: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c66f9e0, d0Rual) 'H264 PPS'
[ 327] 0x3c673e20: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c673e40, d0Rual) 'H264 PPS'
[ 101] 0x3c678280: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c6782a0, d0Rual) 'H264 PPS'
[  76] 0x3c67c6e0: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3c67c700, d3Rual) 'CABAC output'
[  91] 0x3c6f3b00: used 119K (refcount 1 lock count 0, size   122240, align   32, data 0x3c6f3b20, d0Rual) 'Vdec3 Msgbuf'
[ 247] 0x3c7118c0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3c712000, d1ruAL) 'video_decodeRIL:image pool'
[ 182] 0x3c78d180: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3c78d200, d3rual) 'H264 dummy data partition'
0x3c78d3a0: free 1.3K
[ 196] 0x3c78d8c0: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3c78d900, d3rual) 'H264 dummy data partition'
[ 298] 0x3c78dae0: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3c78db00, d3rual) 'H264 dummy data partition'
[ 230] 0x3c78dd00: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c78dd20, d0Rual) 'H264 SPS'
[ 269] 0x3c78e600: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c78e620, d1rual) 'ilin mapping buffer'
[ 199] 0x3c78f640: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c78f660, d0Rual) 'H264 SPS'
[ 194] 0x3c78ff40: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c78ff60, d1rual) 'ilin mapping buffer'
[  62] 0x3c790f80: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c790fa0, d0Rual) 'H264 PPS'
[  39] 0x3c7953e0: used 1.0M (refcount 1 lock count 0, size  1048576, align  256, data 0x3c795400, d3Rual) 'Vdec3 CDB'
[ 235] 0x3c895500: used  17K (refcount 1 lock count 0, size    17424, align   32, data 0x3c895520, d0Rual) 'H264 PPS'
[ 222] 0x3c899960: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c899980, d0Rual) 'H264 SPS'
0x3c89a260: free 416
[ 197] 0x3c89a400: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3c89a500, d3rual) 'H264 dummy data partition'
[  66] 0x3c89a620: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3c89a700, d3rual) 'H264 dummy data partition'
[ 205] 0x3c89a840: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c89a860, d0Rual) 'H264 SPS'
[ 107] 0x3c89b140: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c89b160, d1rual) 'ilin mapping buffer'
[  65] 0x3c89c180: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3c89c200, d3rual) 'H264 dummy data partition'
[ 233] 0x3c89c3a0: used 2.3K (refcount 1 lock count 0, size     2240, align   32, data 0x3c89c3c0, d0Rual) 'H264 SPS'
[ 283] 0x3c89cca0: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3c89ccc0, d1rual) 'ilin mapping buffer'
[  61] 0x3c89dce0: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3c89dd00, d1Rual) 'H264 dm_storage'
[   5] 0x3c8d86a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3c8d9000, d1ruaL) 'video_decodeRIL:image pool'
[ 301] 0x3c953f60: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3c954000, d1ruaL) 'video_decodeRIL:image pool'
[ 202] 0x3c9cf820: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3c9d0000, d1ruaL) 'video_decodeRIL:image pool'
[  97] 0x3ca4b0e0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3ca4c000, d1ruaL) 'video_decodeRIL:image pool'
[ 183] 0x3cac69a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cac7000, d1ruAL) 'video_decodeRIL:image pool'
[ 152] 0x3cb42260: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cb43000, d1ruaL) 'video_decodeRIL:image pool'
[ 315] 0x3cbbdb20: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3cbbdb40, d1rual) 'ilin mapping buffer'
[ 134] 0x3cbbeb60: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3cbbec00, d3Rual) 'CABAC output'
[  10] 0x3cc35f80: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3cc36000, d3rual) 'H264 dummy data partition'
[ 163] 0x3cc361a0: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3cc361c0, d1Rual) 'H264 dm_storage'
[ 295] 0x3cc70b60: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cc71000, d1ruAL) 'video_decodeRIL:image pool'
[ 195] 0x3ccec420: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cced000, d1ruaL) 'video_decodeRIL:image pool'
[ 307] 0x3cd67ce0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cd68000, d1ruaL) 'video_decodeRIL:image pool'
[ 130] 0x3cde35a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cde4000, d1ruAL) 'video_decodeRIL:image pool'
[ 135] 0x3ce5ee60: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3ce5f000, d1ruaL) 'video_decodeRIL:image pool'
[  69] 0x3ceda720: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3cedb000, d1ruaL) 'video_decodeRIL:image pool'
[ 112] 0x3cf55fe0: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3cf56000, d1ruaL) 'video_decodeRIL:image pool'
[ 129] 0x3cfd18a0: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3cfd18c0, d1rual) 'ilin mapping buffer'
[  95] 0x3cfd28e0: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3cfd2900, d3Rual) 'CABAC output'
[  48] 0x3d049d00: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3d049e00, d3rual) 'H264 dummy data partition'
[ 148] 0x3d049f20: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3d049f40, d1Rual) 'H264 dm_storage'
[ 313] 0x3d0848e0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d085000, d1ruAL) 'video_decodeRIL:image pool'
[ 232] 0x3d1001a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d101000, d1ruAL) 'video_decodeRIL:image pool'
[ 216] 0x3d17ba60: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3d17c000, d1ruaL) 'video_decodeRIL:image pool'
[ 143] 0x3d1f7320: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3d1f8000, d1ruaL) 'video_decodeRIL:image pool'
[ 260] 0x3d272be0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d273000, d1ruaL) 'video_decodeRIL:image pool'
[  74] 0x3d2ee4a0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d2ef000, d1ruaL) 'video_decodeRIL:image pool'
[ 120] 0x3d369d60: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d36a000, d1ruaL) 'video_decodeRIL:image pool'
[ 187] 0x3d3e5620: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3d3e5640, d1rual) 'ilin mapping buffer'
[  57] 0x3d3e6660: used 477K (refcount 1 lock count 0, size   488192, align  256, data 0x3d3e6700, d3Rual) 'CABAC output'
[ 119] 0x3d45da80: used  544 (refcount 1 lock count 0, size      256, align  256, data 0x3d45db00, d3rual) 'H264 dummy data partition'
[ 151] 0x3d45dca0: used  14K (refcount 9 lock count 0, size    14000, align   64, data 0x3d45dcc0, d3rual) 'h264_top_context'
[  38] 0x3d4613c0: used 234K (refcount 1 lock count 0, size   240000, align    4, data 0x3d4613e0, d1Rual) 'H264 dm_storage'
[ 285] 0x3d49bd80: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d49c000, d1ruAL) 'video_decodeRIL:image pool'
[ 157] 0x3d517640: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d518000, d1ruAL) 'video_decodeRIL:image pool'
[  41] 0x3d592f00: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d593000, d1ruaL) 'video_decodeRIL:image pool'
[ 181] 0x3d60e7c0: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d60f000, d1ruaL) 'video_decodeRIL:image pool'
[  45] 0x3d68a080: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d68b000, d1ruaL) 'video_decodeRIL:image pool'
[ 236] 0x3d705940: used 494K (refcount 2 lock count 8, size   501920, align 4096, data 0x3d706000, d1ruaL) 'video_decodeRIL:image pool'
[  14] 0x3d781200: used 494K (refcount 1 lock count 0, size   501920, align 4096, data 0x3d782000, d1ruaL) 'video_decodeRIL:image pool'
[ 214] 0x3d7fcac0: used 4.1K (refcount 1 lock count 0, size     4096, align   32, data 0x3d7fcae0, d1rual) 'ilin mapping buffer'
[  71] 0x3d7fdb00: used  576 (refcount 1 lock count 0, size      512, align    4, data 0x3d7fdb20, d0rual) 'ILCS VC buffer pool'
[ 224] 0x3d7fdd40: used  576 (refcount 1 lock count 0, size      512, align    4, data 0x3d7fdd60, d0rual) 'ILCS VC buffer pool'
[   3] 0x3d7fdf80: used 4.0M (refcount 1 lock count 8, size  4177920, align 4096, data 0x3d7fe000, d1rual) 'ARM FB'
[   2] 0x3dbfafa0: used  16K (refcount 1 lock count 0, size    16384, align   32, data 0x3dbfafc0, d0ruAl) 'audioplus_tmp_buf'
[   1] 0x3dbfefe0: used 4.0K (refcount 1 lock count 0, size        0, align 4096, data 0x3dbff000, d1rual) 'camera fast alloc arena'
small allocs not requested
sudo vcdbg malloc

Code: Select all

 
Pool 0xbe2ead98 (3de6f04c)
Malloc pool size=13M (pool=0x3e2ead98-0x3ef7ff2c)
0x3e2eadc0 = malloc(128K) [call from 0x3dda476a]
0x3e30ade0 = malloc(248)  [call from 0x3dd54d58]
0x3e30b000 = malloc(138K) [call from 0x3dc890cc]
0x3e32e820 = malloc(512)  [v3d_gfxh16_thre]
0x3e32ea40 = malloc(7.3K) [dma_transfer_xfers]
0x3e330760 = malloc(7.0K) [Gencmd service state]
0x3e3323a0 = malloc(180)  [vcos_cmd_entries]
0x3e332480 = malloc(4.0K) [reaper]
0x3e3334a0 = malloc(8.0K) [call from 0x3de17498]
0x3e3354c0 = malloc(100)  [call from 0x3de174b4]
0x3e335560 = malloc(32K)  [call from 0x3dccf9c2]
0x3e33d580 = malloc(512)  [call from 0x3dd37e4c]
0x3e33d7a0 = malloc(272)  [call from 0x3dccfab0]
0x3e33d8e0 = malloc(272)  [call from 0x3dccfab0]
0x3e33da20 = malloc(272)  [call from 0x3dccfab0]
0x3e33db60 = malloc(272)  [call from 0x3dccfab0]
0x3e33dca0 = malloc(272)  [call from 0x3dccfab0]
0x3e33dde0 = malloc(272)  [call from 0x3dccfab0]
0x3e33df20 = malloc(272)  [call from 0x3dccfab0]
0x3e33e060 = malloc(272)  [call from 0x3dccfab0]
0x3e33e1a0 = malloc(272)  [call from 0x3dccfab0]
0x3e33e2e0 = malloc(272)  [call from 0x3dccfab0]
0x3e33e420 = malloc(272)  [call from 0x3dccfab0]
0x3e33e560 = malloc(272)  [call from 0x3dccfab0]
0x3e33e6a0 = malloc(272)  [call from 0x3dccfab0]
0x3e33e7e0 = malloc(272)  [call from 0x3dccfab0]
0x3e33e920 = malloc(272)  [call from 0x3dccfab0]
0x3e33ea60 = malloc(272)  [call from 0x3dccfab0]
0x3e33eba0 = malloc(272)  [call from 0x3dccfab0]
0x3e33ece0 = malloc(272)  [call from 0x3dccfab0]
0x3e33ee20 = malloc(272)  [call from 0x3dccfab0]
0x3e33ef60 = malloc(272)  [call from 0x3dccfab0]
0x3e33f0a0 = malloc(272)  [call from 0x3dccfab0]
0x3e33f1e0 = malloc(272)  [call from 0x3dccfab0]
0x3e33f320 = malloc(272)  [call from 0x3dccfab0]
0x3e33f460 = malloc(272)  [call from 0x3dccfab0]
0x3e33f5a0 = malloc(272)  [call from 0x3dccfab0]
0x3e33f6e0 = malloc(272)  [call from 0x3dccfab0]
0x3e33f820 = malloc(272)  [call from 0x3dccfab0]
0x3e33f960 = malloc(272)  [call from 0x3dccfab0]
0x3e33faa0 = malloc(272)  [call from 0x3dccfab0]
0x3e33fbe0 = malloc(272)  [call from 0x3dccfab0]
0x3e33fd20 = malloc(272)  [call from 0x3dccfab0]
0x3e33fe60 = malloc(272)  [call from 0x3dccfab0]
0x3e33ffa0 = malloc(272)  [call from 0x3dccfab0]
0x3e3400e0 = malloc(272)  [call from 0x3dccfab0]
0x3e340220 = malloc(272)  [call from 0x3dccfab0]
0x3e340360 = malloc(272)  [call from 0x3dccfab0]
0x3e3404a0 = malloc(272)  [call from 0x3dccfab0]
0x3e3405e0 = malloc(272)  [call from 0x3dccfab0]
0x3e340720 = malloc(272)  [call from 0x3dccfab0]
0x3e340860 = malloc(272)  [call from 0x3dccfab0]
0x3e3409a0 = malloc(272)  [call from 0x3dccfab0]
0x3e340ae0 = malloc(272)  [call from 0x3dccfab0]
0x3e340c20 = malloc(272)  [call from 0x3dccfab0]
0x3e340d60 = malloc(272)  [call from 0x3dccfab0]
0x3e340ea0 = malloc(272)  [call from 0x3dccfab0]
0x3e340fe0 = malloc(272)  [call from 0x3dccfab0]
0x3e341120 = malloc(272)  [call from 0x3dccfab0]
0x3e341260 = malloc(272)  [call from 0x3dccfab0]
0x3e3413a0 = malloc(272)  [call from 0x3dccfab0]
0x3e3414e0 = malloc(272)  [call from 0x3dccfab0]
0x3e341620 = malloc(512)  [call from 0x3dc5df9c]
0x3e341840 = malloc(16K)  [call from 0x3dc5dfce]
0x3e345860 = malloc(4.0K) [call from 0x3dc5e02a]
0x3e346880 = malloc(4.0K) [call from 0x3dd1ce58]
0x3e3478a0 = malloc(4.0K) [call from 0x3dd1ce84]
0x3e3488c0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348920 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348980 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e3489e0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348a40 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348aa0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348b00 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348b60 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348bc0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348c20 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348c80 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348ce0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348d40 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348da0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348e00 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348e60 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348ec0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348f20 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348f80 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e348fe0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e349040 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e3490a0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e349100 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e349160 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e3491c0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e349220 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e349280 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e3492e0 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e349340 = malloc(60)   [GPIOMAN_DEFINE_T]
0x3e3493a0 = malloc(8)    [call from 0x3dc7b04a]
0x3e3493e0 = malloc(4.0K) [powerman]
0x3e34a400 = malloc(3.0K) [call from 0x3dca9c62]
0x3e34b020 = malloc(356K) [call from 0x3dca9c98]
0x3e3a4040 = malloc(356K) [call from 0x3dca9cd2]
0x3e3fd060 = malloc(66K)  [call from 0x3dca9d14]
0x3e40d840 = malloc(1.1K) [call from 0x3ddd60ac]
0x3e40dcc0 = malloc(16K)  [call from 0x3dc7481c]
0x3e411ce0 = malloc(4.0K) [stack]
0x3e412d00 = malloc(32)   [q]
0x3e412d40 = malloc(32)   [q]
0x3e412d80 = malloc(4.0K) [stack]
0x3e413da0 = malloc(32)   [q]
0x3e413de0 = malloc(32)   [q]
0x3e413e20 = malloc(16K)  [mbox_read]
0x3e417e40 = malloc(4.0K) [display_update]
0x3e418e60 = malloc(4.0K) [temp_check]
0x3e419e80 = malloc(16K)  [vchiq dma_xfer]
0x3e41df40 = malloc(16K)  [vchiq dma_xfer]
0x3e422000 = malloc(16K)  [vchiq dma_xfer]
0x3e4260c0 = malloc(16K)  [vchiq dma_xfer]
0x3e42a180 = malloc(8.0K) [VCHIQ-0]
0x3e42c1a0 = malloc(8.0K) [VCHIQr-0]
0x3e42e1c0 = malloc(8.0K) [VCHIQs-0]
0x3e4301e0 = malloc(56)   [imageconv stats]
0x3e430240 = malloc(36)   [vchiq_shim]
0x3e4302a0 = malloc(256)  [vchiu_queue_init]
0x3e4303c0 = malloc(476)  [VCHIQ service]
0x3e4305c0 = malloc(36)   [vchiq_shim]
0x3e430620 = malloc(256)  [vchiu_queue_init]
0x3e430740 = malloc(476)  [VCHIQ service]
0x3e430940 = malloc(36)   [vchiq_shim]
0x3e4309a0 = malloc(256)  [vchiu_queue_init]
0x3e430ac0 = malloc(476)  [VCHIQ service]
0x3e430cc0 = malloc(2.0K) [call from 0x3de17498]
0x3e4314c0 = malloc(100)  [call from 0x3de174b4]
0x3e431560 = malloc(4.0K) [GCMD_V]
0x3e432580 = malloc(2.0K) [HAUDVCHI]
0x3e432da0 = malloc(36)   [vchiq_shim]
0x3e432e00 = malloc(256)  [vchiu_queue_init]
0x3e432f20 = malloc(476)  [VCHIQ service]
0x3e433120 = malloc(37K)  [ILCS State]
0x3e43c420 = malloc(256)  [vchiu_queue_init]
0x3e43c540 = malloc(476)  [VCHIQ service]
0x3e43c740 = malloc(52)   [ILCS_VC_COMMON]
0x3e43c7a0 = malloc(4.0K) [ILCS_VC]
0x3e43d7c0 = malloc(3.0K) [call from 0x3dddf70e]
0x3e43e3e0 = malloc(36)   [vchiq_shim]
0x3e43e440 = malloc(256)  [vchiu_queue_init]
0x3e43e560 = malloc(476)  [VCHIQ service]
0x3e43e760 = malloc(36)   [vchiq_shim]
0x3e43e7c0 = malloc(256)  [vchiu_queue_init]
0x3e43e8e0 = malloc(476)  [VCHIQ service]
0x3e43eae0 = malloc(36)   [vchiq_shim]
0x3e43eb40 = malloc(256)  [vchiu_queue_init]
0x3e43ec60 = malloc(476)  [VCHIQ service]
0x3e43ee60 = malloc(3.0K) [call from 0x3dddf782]
0x3e43fa80 = malloc(36)   [vchiq_shim]
0x3e43fae0 = malloc(256)  [vchiu_queue_init]
0x3e43fc00 = malloc(476)  [VCHIQ service]
0x3e43fe00 = malloc(36)   [vchiq_shim]
0x3e43fe60 = malloc(256)  [vchiu_queue_init]
0x3e43ff80 = malloc(476)  [VCHIQ service]
0x3e440180 = malloc(36)   [vchiq_shim]
0x3e4401e0 = malloc(256)  [vchiu_queue_init]
0x3e440300 = malloc(476)  [VCHIQ service]
0x3e440500 = malloc(60)   [call from 0x3dd4ce68]
0x3e440560 = malloc(16K)  [vchiu_queue_init]
0x3e444580 = malloc(476)  [VCHIQ service]
0x3e444780 = malloc(60)   [call from 0x3dd4ce68]
0x3e4447e0 = malloc(16K)  [vchiu_queue_init]
0x3e448800 = malloc(476)  [VCHIQ service]
0x3e448a00 = malloc(60)   [call from 0x3dd4ce68]
0x3e448a60 = malloc(16K)  [vchiu_queue_init]
0x3e44ca80 = malloc(476)  [VCHIQ service]
0x3e44cc80 = malloc(476)  [VCHIQ service]
0x3e44ce80 = malloc(320K) [KHRN_S]
0x3e49cea0 = malloc(36)   [vchiq_shim]
0x3e49cf00 = malloc(256)  [vchiu_queue_init]
0x3e49d020 = malloc(476)  [VCHIQ service]
0x3e49d220 = malloc(4.0K) [HREQ task]
0x3e49e240 = malloc(4.6K) [call from 0x3dddf844]
0x3e49f4c0 = malloc(4.0K) [FILESERV]
0x3e4a04e0 = malloc(36)   [vchiq_shim]
0x3e4a0540 = malloc(256)  [vchiu_queue_init]
0x3e4a0660 = malloc(476)  [VCHIQ service]
0x3e4a0860 = malloc(608)  [Shared Memory Service]
0x3e4a0ae0 = malloc(4.0K) [sm_thread]
0x3e4a1b00 = malloc(36)   [vchiq_shim]
0x3e4a1b60 = malloc(256)  [vchiu_queue_init]
0x3e4a1c80 = malloc(476)  [VCHIQ service]
0x3e4a1e80 = malloc(488)  [Shared Memory Cache Test]
0x3e4a20a0 = malloc(4.0K) [smct_thread]
0x3e4a30c0 = malloc(36)   [vchiq_shim]
0x3e4a3120 = malloc(256)  [vchiu_queue_init]
0x3e4a3240 = malloc(476)  [VCHIQ service]
0x3e4a3440 = malloc(1.3K) [CEA modes table]
0x3e4a3980 = malloc(1.7K) [DMT modes table]
0x3e4a4080 = malloc(4.0K) [call from 0x3dde0616]
0x3e4a50a0 = malloc(36)   [vchiq_shim]
0x3e4a5100 = malloc(256)  [vchiu_queue_init]
0x3e4a5220 = malloc(476)  [VCHIQ service]
0x3e4a5420 = malloc(36)   [vchiq_shim]
0x3e4a5480 = malloc(256)  [vchiu_queue_init]
0x3e4a55a0 = malloc(476)  [VCHIQ service]
0x3e4a57a0 = malloc(36)   [vchiq_shim]
0x3e4a5800 = malloc(256)  [vchiu_queue_init]
0x3e4a5920 = malloc(476)  [VCHIQ service]
0x3e4a5b20 = malloc(4.0K) [call from 0x3dde0692]
0x3e4a6b40 = malloc(36)   [vchiq_shim]
0x3e4a6ba0 = malloc(256)  [vchiu_queue_init]
0x3e4a6cc0 = malloc(476)  [VCHIQ service]
0x3e4a6ec0 = malloc(36)   [vchiq_shim]
0x3e4a6f20 = malloc(256)  [vchiu_queue_init]
0x3e4a7040 = malloc(476)  [VCHIQ service]
0x3e4a7240 = malloc(36)   [vchiq_shim]
0x3e4a72a0 = malloc(256)  [vchiu_queue_init]
0x3e4a73c0 = malloc(476)  [VCHIQ service]
0x3e4a75c0 = malloc(4.0K) []
0x3e4a85e0 = malloc(36)   [vchiq_shim]
0x3e4a8640 = malloc(256)  [vchiu_queue_init]
0x3e4a8760 = malloc(476)  [VCHIQ service]
0x3e4a8960 = malloc(36)   [vchiq_shim]
0x3e4a89c0 = malloc(256)  [vchiu_queue_init]
0x3e4a8ae0 = malloc(476)  [VCHIQ service]
0x3e4a8ce0 = malloc(36)   [vchiq_shim]
0x3e4a8d40 = malloc(256)  [vchiu_queue_init]
0x3e4a8e60 = malloc(476)  [VCHIQ service]
0x3e4a9060 = malloc(4.0K) []
0x3e4aa080 = malloc(36)   [vchiq_shim]
0x3e4aa0e0 = malloc(256)  [vchiu_queue_init]
0x3e4aa200 = malloc(476)  [VCHIQ service]
0x3e4aa400 = malloc(36)   [vchiq_shim]
0x3e4aa460 = malloc(256)  [vchiu_queue_init]
0x3e4aa580 = malloc(476)  [VCHIQ service]
0x3e4aa780 = malloc(36)   [vchiq_shim]
0x3e4aa7e0 = malloc(256)  [vchiu_queue_init]
0x3e4aa900 = malloc(476)  [VCHIQ service]
0x3e4aab00 = malloc(36)   [vchiq_shim]
0x3e4aab60 = malloc(256)  [vchiu_queue_init]
0x3e4aac80 = malloc(476)  [VCHIQ service]
0x3e4aae80 = malloc(36)   [vchiq_shim]
0x3e4aaee0 = malloc(256)  [vchiu_queue_init]
0x3e4ab000 = malloc(476)  [VCHIQ service]
0x3e4ab200 = malloc(36)   [vchiq_shim]
0x3e4ab260 = malloc(256)  [vchiu_queue_init]
0x3e4ab380 = malloc(476)  [VCHIQ service]
0x3e4ab580 = malloc(36)   [vchiq_shim]
0x3e4ab5e0 = malloc(256)  [vchiu_queue_init]
0x3e4ab700 = malloc(476)  [VCHIQ service]
0x3e4ab900 = malloc(36)   [vchiq_shim]
0x3e4ab960 = malloc(256)  [vchiu_queue_init]
0x3e4aba80 = malloc(476)  [VCHIQ service]
0x3e4abc80 = malloc(36)   [vchiq_shim]
0x3e4abce0 = malloc(256)  [vchiu_queue_init]
0x3e4abe00 = malloc(476)  [VCHIQ service]
0x3e4ac000 = malloc(36)   [vchiq_shim]
0x3e4ac060 = malloc(256)  [vchiu_queue_init]
0x3e4ac180 = malloc(476)  [VCHIQ service]
0x3e4ac380 = malloc(36)   [vchiq_shim]
0x3e4ac3e0 = malloc(256)  [vchiu_queue_init]
0x3e4ac500 = malloc(476)  [VCHIQ service]
0x3e4ac700 = malloc(476)  [VCHIQ service]
0x3e4ac900 = malloc(476)  [VCHIQ service]
0x3e4acb00 = malloc(476)  [VCHIQ service]
0x3e4acd00 = malloc(476)  [VCHIQ service]
0x3e4acf00 = malloc(476)  [VCHIQ service]
0x3e4ad100 = malloc(476)  [VCHIQ service]
0x3e4ad300 = malloc(476)  [VCHIQ service]
0x3e4ad500 = malloc(476)  [VCHIQ service]
0x3e4ad700 = malloc(476)  [VCHIQ service]
0x3e4ad900 = malloc(476)  [VCHIQ service]
0x3e4adb00 = malloc(4.3K) [mmal debug log]
0x3e4aec40 = malloc(16K)  [mmal_host_log]
0x3e4b2c80 = malloc(512)  [vchiu_queue_init]
0x3e4b2ea0 = malloc(476)  [VCHIQ service]
0x3e4b30a0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3100 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3160 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b31c0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3220 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3280 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b32e0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3340 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b33a0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3400 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3460 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b34c0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3520 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3580 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b35e0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3640 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b36a0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3700 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3760 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b37c0 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3820 = malloc(40)   [call from 0x3dd5e86a]
0x3e4b3880 = malloc(256)  [mmal msg queue mem]
0x3e4b39a0 = malloc(4.0K) [mmal msg queue ]
0x3e4b49c0 = malloc(4.0K) [mmal msg queue ]
0x3e4b59e0 = malloc(4.0K) [mmal worker]
0x3e4b6a00 = malloc(476)  [VCHIQ service]
0x3e4b6c00 = malloc(4.0K) [vc watchdog]
0x3e4b7c20 = malloc(37K)  [ILCS State]
0x3e4c0f20 = malloc(256)  [vchiu_queue_init]
0x3e4c1040 = malloc(476)  [VCHIQ service]
0x3e4c1240 = malloc(52)   [ILCS_VC_COMMON]
0x3e4c12a0 = malloc(4.0K) [ILCS_VC]
0x3e4c22c0 = malloc(20K)  [call from 0x3de158a6]
0x3e4c7440 = malloc(712)  [RIL component]
0x3e4c7740 = malloc(104)  [ILCS VC comp]
0x3e4c77e0 = malloc(4.9K) [call from 0x3de16722]
0x3e4c8bc0 = malloc(524)  [RIL component]
0x3e4c8e00 = malloc(60)   [ILCS VC comp]
0x3e4c8e60 = malloc(72)   [RIL buffer header]
0x3e4c8ee0 = malloc(18K)  [call from 0x3dddaf82]
0x3e4cd8a0 = malloc(84K)  []
0x3e4e26e0 = malloc(24)   [call from 0x3dd534f4]
0x3e4e2720 = malloc(44)   [call from 0x3dc98f46]
0x3e4e2780 = malloc(220)  [call from 0x3dc894c0]
0x3e4e2880 = malloc(44)   [call from 0x3dc98f46]
0x3e4e28e0 = malloc(4.0K) [H264#0 Outer]
0x3e4e3900 = malloc(20K)  [call from 0x3de158a6]
0x3e4e8a80 = malloc(712)  [RIL component]
0x3e4e8d80 = malloc(104)  [ILCS VC comp]
0x3e4e8e20 = malloc(4.9K) [call from 0x3de16722]
0x3e4ea200 = malloc(524)  [RIL component]
0x3e4ea440 = malloc(60)   [ILCS VC comp]
0x3e4ea4a0 = malloc(72)   [RIL buffer header]
0x3e4ea520 = malloc(18K)  [call from 0x3dddaf82]
0x3e4eeee0 = malloc(84K)  [4▒=:]
0x3e503d20 = malloc(24)   [call from 0x3dd534f4]
0x3e503d60 = malloc(44)   [call from 0x3dc98f46]
0x3e503dc0 = malloc(220)  [call from 0x3dc894c0]
0x3e503ec0 = malloc(44)   [call from 0x3dc98f46]
0x3e503f20 = malloc(4.0K) [H264#1 Outer]
0x3e504f40 = malloc(20K)  [call from 0x3de158a6]
0x3e50a0c0 = malloc(712)  [RIL component]
0x3e50a3c0 = malloc(104)  [ILCS VC comp]
0x3e50a460 = malloc(4.9K) [call from 0x3de16722]
0x3e50b840 = malloc(524)  [RIL component]
0x3e50ba80 = malloc(60)   [ILCS VC comp]
0x3e50bae0 = malloc(72)   [RIL buffer header]
0x3e50bb60 = malloc(18K)  [call from 0x3dddaf82]
0x3e510520 = malloc(84K)  [4▒=:]
0x3e525360 = malloc(24)   [call from 0x3dd534f4]
0x3e5253a0 = malloc(44)   [call from 0x3dc98f46]
0x3e525400 = malloc(220)  [call from 0x3dc894c0]
0x3e525500 = malloc(44)   [call from 0x3dc98f46]
0x3e525560 = malloc(4.0K) [H264#2 Outer]
0x3e526580 = malloc(20K)  [call from 0x3de158a6]
0x3e52b700 = malloc(712)  [RIL component]
0x3e52ba00 = malloc(104)  [ILCS VC comp]
0x3e52baa0 = malloc(4.9K) [call from 0x3de16722]
0x3e52ce80 = malloc(524)  [RIL component]
0x3e52d0c0 = malloc(60)   [ILCS VC comp]
0x3e52d120 = malloc(72)   [RIL buffer header]
0x3e52d1a0 = malloc(18K)  [call from 0x3dddaf82]
0x3e531b60 = malloc(84K)  [4▒=9]
0x3e5469a0 = malloc(24)   [call from 0x3dd534f4]
0x3e5469e0 = malloc(44)   [call from 0x3dc98f46]
0x3e546a40 = malloc(220)  [call from 0x3dc894c0]
0x3e546b40 = malloc(44)   [call from 0x3dc98f46]
0x3e546ba0 = malloc(4.0K) [H264#3 Outer]
0x3e547bc0 = malloc(20K)  [call from 0x3de158a6]
0x3e54cd40 = malloc(712)  [RIL component]
0x3e54d040 = malloc(104)  [ILCS VC comp]
0x3e54d0e0 = malloc(4.9K) [call from 0x3de16722]
0x3e54e4c0 = malloc(524)  [RIL component]
0x3e54e700 = malloc(60)   [ILCS VC comp]
0x3e54e760 = malloc(72)   [RIL buffer header]
0x3e54e7e0 = malloc(18K)  [call from 0x3dddaf82]
0x3e5531a0 = malloc(84K)  [4▒=:]
0x3e567fe0 = malloc(24)   [call from 0x3dd534f4]
0x3e568020 = malloc(44)   [call from 0x3dc98f46]
0x3e568080 = malloc(220)  [call from 0x3dc894c0]
0x3e568180 = malloc(44)   [call from 0x3dc98f46]
0x3e5681e0 = malloc(4.0K) [H264#4 Outer]
0x3e569200 = malloc(20K)  [call from 0x3de158a6]
0x3e56e380 = malloc(712)  [RIL component]
0x3e56e680 = malloc(104)  [ILCS VC comp]
0x3e56e720 = malloc(4.9K) [call from 0x3de16722]
0x3e56fb00 = malloc(524)  [RIL component]
0x3e56fd40 = malloc(60)   [ILCS VC comp]
0x3e56fda0 = malloc(72)   [RIL buffer header]
0x3e56fe20 = malloc(18K)  [call from 0x3dddaf82]
0x3e5747e0 = malloc(84K)  [4▒=9]
0x3e589620 = malloc(24)   [call from 0x3dd534f4]
0x3e589660 = malloc(44)   [call from 0x3dc98f46]
0x3e5896c0 = malloc(220)  [call from 0x3dc894c0]
0x3e5897c0 = malloc(44)   [call from 0x3dc98f46]
0x3e589820 = malloc(4.0K) [H264#5 Outer]
0x3e58a840 = malloc(20K)  [call from 0x3de158a6]
0x3e58f9c0 = malloc(712)  [RIL component]
0x3e58fcc0 = malloc(104)  [ILCS VC comp]
0x3e58fd60 = malloc(4.9K) [call from 0x3de16722]
0x3e591140 = malloc(524)  [RIL component]
0x3e591380 = malloc(60)   [ILCS VC comp]
0x3e5913e0 = malloc(72)   [RIL buffer header]
0x3e591460 = malloc(18K)  [call from 0x3dddaf82]
0x3e595e20 = malloc(84K)  [4▒=1]
0x3e5aac60 = malloc(24)   [call from 0x3dd534f4]
0x3e5aaca0 = malloc(44)   [call from 0x3dc98f46]
0x3e5aad00 = malloc(220)  [call from 0x3dc894c0]
0x3e5aae00 = malloc(44)   [call from 0x3dc98f46]
0x3e5aae60 = malloc(4.0K) [H264#6 Outer]
0x3e5abe80 = malloc(20K)  [call from 0x3de158a6]
0x3e5b1000 = malloc(712)  [RIL component]
0x3e5b1300 = malloc(104)  [ILCS VC comp]
0x3e5b13a0 = malloc(4.9K) [call from 0x3de16722]
0x3e5b2780 = malloc(524)  [RIL component]
0x3e5b29c0 = malloc(60)   [ILCS VC comp]
0x3e5b2a20 = malloc(72)   [RIL buffer header]
0x3e5b2aa0 = malloc(18K)  [call from 0x3dddaf82]
0x3e5b7460 = malloc(84K)  [4▒=:]
0x3e5cc2a0 = malloc(24)   [call from 0x3dd534f4]
0x3e5cc2e0 = malloc(44)   [call from 0x3dc98f46]
0x3e5cc340 = malloc(220)  [call from 0x3dc894c0]
0x3e5cc440 = malloc(44)   [call from 0x3dc98f46]
0x3e5cc4a0 = malloc(4.0K) [H264#7 Outer]
0x3e5cd4c0 = malloc(20K)  [call from 0x3de158a6]
0x3e5d2640 = malloc(712)  [RIL component]
0x3e5d2940 = malloc(104)  [ILCS VC comp]
0x3e5d29e0 = malloc(4.9K) [call from 0x3de16722]
0x3e5d3dc0 = malloc(524)  [RIL component]
0x3e5d4000 = malloc(60)   [ILCS VC comp]
0x3e5d4060 = malloc(72)   [RIL buffer header]
0x3e5d40e0 = malloc(18K)  [call from 0x3dddaf82]
0x3e5d8aa0 = malloc(84K)  [4▒=:]
0x3e5ed8e0 = malloc(24)   [call from 0x3dd534f4]
0x3e5ed920 = malloc(44)   [call from 0x3dc98f46]
0x3e5ed980 = malloc(220)  [call from 0x3dc894c0]
0x3e5eda80 = malloc(44)   [call from 0x3dc98f46]
0x3e5edae0 = malloc(4.0K) [H264#8 Outer]
0x3e5eeb00 = malloc(20K)  [call from 0x3de158a6]
0x3e5f3c80 = malloc(712)  [RIL component]
0x3e5f3f80 = malloc(104)  [ILCS VC comp]
0x3e5f4020 = malloc(4.9K) [call from 0x3de16722]
0x3e5f5400 = malloc(524)  [RIL component]
0x3e5f5640 = malloc(60)   [ILCS VC comp]
0x3e5f56a0 = malloc(72)   [RIL buffer header]
0x3e5f5720 = malloc(20K)  [call from 0x3de158a6]
0x3e5fa8a0 = malloc(712)  [RIL component]
0x3e5faba0 = malloc(104)  [ILCS VC comp]
0x3e5fac40 = malloc(4.9K) [call from 0x3de16722]
0x3e5fc020 = malloc(524)  [RIL component]
0x3e5fc260 = malloc(60)   [ILCS VC comp]
0x3e5fc2c0 = malloc(72)   [RIL buffer header]
0x3e5fc340 = malloc(20K)  [call from 0x3de158a6]
0x3e6014c0 = malloc(712)  [RIL component]
0x3e6017c0 = malloc(104)  [ILCS VC comp]
0x3e601860 = malloc(4.9K) [call from 0x3de16722]
0x3e602c40 = malloc(524)  [RIL component]
0x3e602e80 = malloc(60)   [ILCS VC comp]
0x3e602ee0 = malloc(72)   [RIL buffer header]
0x3e602f50 = hole(75K)
0x3e615be0 = malloc(220)  [call from 0x3dc894c0]
0x3e615cd0 = hole(9.4M)
Malloced:3.1M Remaining:9.5M
sudo vcdbg log msg
Last 2000 lines are below
http://pastebin.com/hDLM8DTr

Thanks a lot!

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 10:53 am

That looks OK TBH, seems to be plenty of memory left. 6x9 may have a better idea.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 11:25 am

jamesh wrote:That looks OK TBH, seems to be plenty of memory left. 6x9 may have a better idea.
Not at the moment. Both heaps look OK, and not fragmented either.

I think I'd need to see logging. Just looking at when it throws StreamCorrupt:
- Starting decoding takes more than 500ms.
- Default error on decoder open failing (out of memory or bad property handled explicitly).

In the first case, if you do "vcgencmd set_logging level=0x40" first, you would get a log line "video_decode:RIL: timeout waiting for frames" if you run "sudo vcdbg log msg". Simple workaround would be to open all the instances first before starting feeding them buffers (may need to feed header bytes to get all the allocations sorted, but stop at first I-frame).
In the latter case I'd need to dig into the codec code it's possible there is a static array of users somewhere that is sized at 9, but I don't know that code well enough. It may need deborah or dom to look into it.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 1:56 pm

With the original code which tries to decode as fast as possible, I ran vcgencmd set_logging level=0x40
Then sudo vcdbg log msg
http://pastebin.com/JHHNKe2B

Then, I added sleep in my code to simulate your workaround, and I get OMX_ErrorInsufficientResources instead.
And this log http://pastebin.com/TFHYx6fg

I instanciate all video decoders at the same time and pass in one buffer with OMX_EmptyThisBuffer every 500ms.
Then as soon as I get a OMX_EventPortSettingsChanged event, I sleep for 10 sec, this is just after the tunnel setup and the video render in executing state.
I get OMX_ErrorInsufficientResources then OMX_ErrorStreamCorrupt on components id greater than 9.
I tried with a video 160 x 120 and same result. And I tried to update my pi software and got same results.

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 3:19 pm

Log corrupted means that it's being written faster than it can be read :-(
I'll try to find some time to run your test case, but unlikely before the weekend.

It sounds like it's the codec throwing a wobbler rather than the IL layer. That's a lot of code to hunt through to find a fixed size array somewhere (and that's my bet on what it is).
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

jean343
Posts: 26
Joined: Wed Apr 02, 2014 7:37 pm

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 4:24 pm

Thanks a lot for your help,

Is the video decoder source code open source? I would like to look through it.
I did look at the interfaces .h and could not find anything related.

Thanks,

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 4:40 pm

jean343 wrote:Is the video decoder source code open source? I would like to look through it.
I did look at the interfaces .h and could not find anything related.
No, all the IL components are built into the VideoCore GPU firmware for a combination of IP and licencing reasons.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6626
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: Video wall - OMX decoder limit

Wed Jan 27, 2016 10:16 pm

Just had a butchers.
It is the codec throwing an error on open due to failing due to not getting a handle on a hardware block.
The hardware block supports 32 "users". Each codec decode instance registers 3 times for some reason. Yes in theory that should give 10 good decode instances (30 users), so there must be something else registering too. I haven't tracked all the users, just why it fails. This is all around power gating and shutting down blocks when idle.

I'll ping those at Pi Towers to see if they have any objections over opening this up to more users. Doubling would give you a potential 18 or 19 good decode streams simultaneously. I'll try a quick hack to see if it works first though.
Last edited by 6by9 on Wed Jan 27, 2016 10:26 pm, edited 1 time in total.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

Return to “OpenMAX”