Media Framework 360 Video GearVR Black Screen Memory

Hi
I have problem with playing 360 movies. Movie stops playing after several movies played. I have checked and smaller the movie is more times i can play it. So conclusion is that it has something to do with memory. This happens in 4.14 Realease, 4.15 Master and 4.14 Oculus Branches. Movies are started by blueprint to play after new level is opened.

Binder_2        	Info    	33040.287463    	message received msg=5, ext1=4096, ext2=2048
Binder_2        	Info    	33040.288891    	New video size 4096 x 2048
Binder_2        	Info    	33040.288932    	callback application
Binder_2        	Info    	33040.289121    	back from callback
Binder_2        	Info    	33040.289347    	message received msg=200, ext1=10972, ext2=0
Binder_2        	Warning 	33040.291442    	info/warning (10972, 0)
Binder_2        	Info    	33040.291496    	callback application
Binder_2        	Info    	33040.291612    	back from callback
Binder_2        	Info    	33040.292327    	message received msg=1, ext1=0, ext2=0
Binder_2        	Info    	33040.293489    	prepared
Binder_2        	Info    	33040.293546    	signal application thread
OVR::VSync      	Info    	33040.293774    	vsync_event update delayed by 6.0 milliseconds
main            	Info    	33040.294817    	setSubtitleAnchor in MediaPlayer
Binder_2        	Info    	33040.293592    	callback application
Binder_2        	Info    	33040.293837    	back from callback
Thread-1034     	Info    	33040.293612    	prepare complete - status=0
Thread-1034     	Info    	33040.293675    	setSubtitleAnchor in MediaPlayer
Thread-1034     	Info    	33040.298921    	invoke 68
main            	Info    	33040.300782    	invoke 68
OVR::TimeWarp   	Info    	33040.306511    	setSchedFifoStatic tid:20337 pto:0
Thread-1034     	Info    	33040.308409    	invoke 68
Thread-1034     	Info    	33040.309520    	invoke 68
Thread-1034     	Info    	33040.310187    	getVideoWidth
Thread-1034     	Info    	33040.310221    	getVideoWidth: 4096
Thread-1034     	Info    	33040.310244    	getVideoHeight
Thread-1034     	Info    	33040.310265    	getVideoHeight: 2048
Thread-1034     	Info    	33040.310361    	invoke 68
Thread-1034     	Info    	33040.311585    	invoke 68
Thread-1034     	Info    	33040.314138    	invoke 72
OVR::TimeWarp   	Info    	33040.318073    	VRManager set thread priority to 0
OVR::TimeWarp   	Info    	33040.318148    	SetSchedFifo( tid=20337, pri=0 ) succeeded
OVR::TimeWarp   	Info    	33040.318354    	setSchedFifoStatic tid:20440 pto:0
Thread-1034     	Info    	33040.316111    	invoke 68
Thread-1034     	Info    	33040.317130    	invoke 72
Thread-1034     	Info    	33040.318672    	setLooping: 0
Thread-1034     	Info    	33040.318699    	MediaPlayer::setLooping
OVR::TimeWarp   	Info    	33040.326679    	VRManager set thread priority to 0
OVR::TimeWarp   	Info    	33040.326763    	SetSchedFifo( tid=20440, pri=0 ) succeeded
OVR::TimeWarp   	Warning 	33040.328214    	VSync 1982429: eye=1,late=14.2ms,over=0.0ms,CPU=1.1ms,GPU>=0.2
OVR::TimeWarp   	Info    	33040.355553    	setSchedFifoStatic tid:20337 pto:1
OVR::TimeWarp   	Info    	33040.361771    	VRManager set thread priority to 1
OVR::TimeWarp   	Info    	33040.361896    	SetSchedFifo( tid=20337, pri=1 ) succeeded
OVR::TimeWarp   	Info    	33040.362156    	setSchedFifoStatic tid:20440 pto:1
OVR::TimeWarp   	Info    	33040.368593    	VRManager set thread priority to 1
OVR::TimeWarp   	Info    	33040.368667    	SetSchedFifo( tid=20440, pri=1 ) succeeded
OVR::TimeWarp   	Warning 	33040.370956    	VSync 1982432: eye=1,late=6.2ms,over=0.0ms,CPU=1.2ms,GPU>=0.9
OVR::DeviceMngr 	Info    	33040.474193    	DeviceManagerThread - event 52 (499Hz) (Tid=20369)
OVR::Stats      	Info    	33040.841209    	FPS=51,Prd=50ms,Tear=2,Early=49,Stale=10,VSnc=1,Lat=1,CPU2/GPU=2/3,1113/401MHz,OC=F,TA=C/C/C/C,SP=F/F/F/F,Mem=1017MHz,Free=1272MB,PSM=0,PLS=0,Temp=33.0C/32.0C
OVR::DeviceMngr 	Info    	33116.682123    	DeviceManagerThread - event 52 (499Hz) (Tid=20369)
Thread-1034     	Error   	33116.826438    	mmap(0,514403031) failed: Out of memory
Thread-1034     	Warning 	33116.826479    	create map from entry failed
OVR::Stats      	Info    	33116.843370    	FPS=60,Prd=51ms,Tear=0,Early=60,Stale=0,VSnc=1,Lat=1,CPU2/GPU=2/3,1113/401MHz,OC=F,TA=C/C/C/C,SP=F/F/F/F,Mem=1017MHz,Free=966MB,PSM=0,PLS=0,Temp=33.6C/32.5C
OVR::DeviceMngr 	Info    	33117.684118    	DeviceManagerThread - event 52 (499Hz) (Tid=20369)
OVR::Stats      	Info    	33117.843339    	FPS=60,Prd=51ms,Tear=0,Early=60,Stale=0,VSnc=1,Lat=1,CPU2/GPU=2/3,1113/401MHz,OC=F,TA=C/C/C/C,SP=F/F/F/F,Mem=1017MHz,Free=966MB,PSM=0,PLS=0,Temp=33.6C/32.5C
Thread-1034     	Error   	33118.056945    	mmap(0,514403031) failed: Out of memory
Thread-1034     	Warning 	33118.056993    	create map from entry failed
OVR::DeviceMngr 	Info    	33118.687213    	DeviceManagerThread - event 52 (498Hz) (Tid=20369)
OVR::Stats      	Info    	33118.841293    	FPS=60,Prd=52ms,Tear=0,Early=60,Stale=0,VSnc=1,Lat=1,CPU2/GPU=2/3,1113/401MHz,OC=F,TA=C/C/C/C,SP=F/F/F/F,Mem=1017MHz,Free=966MB,PSM=0,PLS=0,Temp=33.6C/33.0C
Thread-1034     	Error   	33119.288094    	mmap(0,514403031) failed: Out of memory
Thread-1034     	Warning 	33119.288143    	create map from entry failed
OVR::DeviceMngr 	Info    	33119.689183    	DeviceManagerThread - event 52 (499Hz) (Tid=20369)

You could also try asking in this forum thread which previously had dev attention about the new android media player in 4.13+

Hey Tim,
Thanks for replay. Please mail me and I will provide You all needed files.
We use only 4k sphere movies. PiE or mobile preview works fine. It happens only on devices.

Hey Kwawrzyniak,

Do you have a sample video you could upload here or provide privately? Or even a link to a good test sample would work. I don’t have any 360 video test content.

Also, does this only happen with the 360 video or any standard 2D movie as well?

Thanks!

Tim

This does look like an out of memory issue:

mmap(0,514403031) failed: Out of memory

Looks like it is trying to get approx 490MB mapped into process’s address space and failing.

We are doing a Stop and Reset on the media player before playing a new video on same FAndroidMediaPlayer, and on destroy we close it and do a Release which should be freeing any resources.

You can monitor the memory usage using “adb shell cat /proc/meminfo” and for the process by first finding the process id with “adb ps” (look for your package name and the first number is the PID. Do an “adb shell cat /proc/PID/status)”.

Hi
You are right.
I use Close blueprint on media player variable at every time i need to skip movie or go to pausemenu. According to this:

void FAndroidMediaPlayer::Close()
{
	if (State == EMediaState::Closed)
	{
		return;
	}

	Tracks.Reset();
	Info.Empty();

	if (JavaMediaPlayer.IsValid())
	{
		JavaMediaPlayer->Stop();
		JavaMediaPlayer->Reset();
	}

	MediaUrl = FString();
	State = EMediaState::Closed;

	// notify listeners
	MediaEvent.Broadcast(EMediaEvent::TracksChanged);
	MediaEvent.Broadcast(EMediaEvent::MediaClosed);
}

It should stop and reset media player.
I have put memory log inside txt files attached but app process don’t exceed 287 Mb mem so far.

Any news on this? I have a similar issue.