Hi,

I'm getting corrupted frames at the very beginning of the video when decoding 
HEVC streamed via FramedSource and H265VideoRTPSink. 

For testing and trying to isolate the issue, I write the raw coded and 
to-be-sent data to disk in my server code, and play it back, using my own 
decoder code, ffplay, MPC, and VLC. When I do this, there is no problem, at 
least none visible, also none of the players reports any errors. 

As a next step, I write the raw to-be-decoded data, as received via RTP 
streaming, to disk from within my client code. When I play this back, there 
seems to be data missing or broken. ffplay gives the following output:

Input #0, hevc, from 'test.mp4':0B f=0/0
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: hevc (Main), yuv420p(tv), 6176x2076 [SAR 1:1 DAR 
1544:519], 30 fps, 30 tbr, 1200k tbn, 30 tbc
[hevc @ 0000000002ee2f60] Could not find ref with POC 1  0B f=0/0
    nan M-V:    nan fd=   0 aq=    0KB vq=  132KB sq=    0B f=0/0

This happens quite frequently, but not always. Server and client are running on 
the same machine for starters, so there is no network to blame. The video I am 
sending is quite large in terms of frame dimensions (6176x2076), so I turned 
the OutPacketBuffer::maxSize up to 500k, but it also happens with 3088x2076, 
although not as often. I googled a bit and the error "Could not find ref with 
POC 1" seems to hint to a demuxing problem?

In order to eliminate sources of error, I tried to reproduce this with as 
little of my own code as possible. For that I write a file with 6176x2076 HEVC 
encoded data to disk and doublecheck with ffplay -- the file seems to be fine. 
I use live555MediaServer.exe as an RTSP server and VLC as a client -> the video 
displayed by VLC is broken. I also tried to capture the received data and write 
it to disk via openRTSP. The produced file is also broken, as I can see when I 
play it back with ffplay, although there is no error reported in this case. MPC 
also shows broken frames, VLC refuses to render the file at all. 

So I guess, what I'm asking is: 
1) First, and most importantly: does anybody have an idea where this issue may 
be coming from and what I can do about it? Or how I could figure out what the 
actual issue is?
2) What is the best way to doublecheck in my code if the received data is 
indeed valid? I tried to compare the sizes of NAL packages fed in my overloaded 
version of FramedSource::deliverFrame vs. the package sizes I get in 
MediaSink::afterReading, but I cannot see any relation -- maybe this could tell 
something, but I'm not sure, I think I would have to become an expert in HEVC 
payloading first, which I'm not at this point.
3) Is there anything particular I have to do with the received data, I'm not 
aware of? From the MPlayer source code I got the impression, I just have to 
prefix the data with 0x000001 and then feed it to the decoder, which I do in my 
overloaded MediaSink::afterReading, but maybe I overlooked something. Anyways, 
this doesn't seem to be solving the issue at hand, since I can reproduce the 
error without using my own code at all.

Thanks,
Roland

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to