Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
34 Views

mp4 decoding UMC::h264_exception at memory location ...

Jump to solution
I'm using simple_player to test mp4 decoding. The video is mp4_atom stream with H264 encoding as reported by the player.

However the video can not be played. Opening the project in debug mode I found exception report in visual studio output window:

First-chance exception at 0x75cab727 in simple_player.exe: Microsoft C++ exception: UMC::h264_exception at memory location 0x065ff8c0..


Those are the file links:

http://remixshare.com/dl/9z2lh/00002.mp4
http://remixshare.com/dl/tvlih/00003.mp4
http://remixshare.com/dl/6nrtv/00004.mp4
http://remixshare.com/dl/2tjie/00005.mp4


0 Kudos

Accepted Solutions
Highlighted
New Contributor I
34 Views
Hi. Your are using GPAC to create the .mp4 streams. So some modifications required in file
umc_mp4_parser.cpp from codec/mpeg4_spl/src directory.
The following lines should be added after line 1348:
else
dr->MovePosition(leaf_atom.size-8);
This modifcation required to skip the unused atom.
Regards,
Alexander

View solution in original post

0 Kudos
7 Replies
Highlighted
Employee
34 Views
Hello,

Thanks for your report here. I will download these function, and have check here?
Which version of Intel IPP are you using now? Is this a 64 bit appliction, or 32 bit?

thanks,
Chao
0 Kudos
Highlighted
New Contributor I
35 Views
Hi. Your are using GPAC to create the .mp4 streams. So some modifications required in file
umc_mp4_parser.cpp from codec/mpeg4_spl/src directory.
The following lines should be added after line 1348:
else
dr->MovePosition(leaf_atom.size-8);
This modifcation required to skip the unused atom.
Regards,
Alexander

View solution in original post

0 Kudos
Highlighted
Beginner
34 Views
I'm using IPP 6.1 and UMC codec pipeline from simple_player example to create splitters and decoders.
Thank you I will try your modifications
0 Kudos
Highlighted
Beginner
34 Views
That is actually solved the problem. But there is another one with those HD mp4 appeared.

I'm capturing at equal intervals e.g. one frame from every N-th second using Splitter::SetTimePosition() and until Splitter::GetNextData() puts to in MediaDataEx::GetTime() frame after desired seek operation I keep extracting the frames.

With mts encoding of those files seeking is precise but with mp4 it is similar to ordinary low resolution videos.
E.g. seeking to 10th second returns first frame from 7th or 8th second,then further seeking to 20th second returns first frame from 16th second, that is several seconds before target position, and it needs to extract all frames to arrive to desired seek position.

Can this be solved or otherwise with small N=1,2 seconds it is much faster to keep extracting all frames one by one and pull only those at a desired N interval step.

Compared to non-HD videos those kinds of capture is very costly, cpu usage is 100% consuming all cores equally.
0 Kudos
Highlighted
New Contributor I
34 Views
Hi 9ine,
I'm not sure that I understood your problem but seems like this is typical thing for repositioning - looking foran I framenearst to selected time mark.
0 Kudos
Highlighted
Beginner
34 Views
How can I skip to nearest I frame after seek operation?
UMC samples show frames capture only.
0 Kudos
Highlighted
New Contributor I
34 Views
Hi 9ine,
The simplest way skip to nearst frame is the following :
- reposition in stream;
- wait for decoder to return UMC_OK instead ofUMC_ERR_NOT_ENOUGH_DATA
Or you can analyze data from splitter (demuxer) after repositioning to skip the unneeded decoder calls.
Regards,
Alexander
0 Kudos