[x264-devel] Re: AW: Re: Error Concealment

List, Peter Peter.List at t-systems.com
Wed Jan 17 15:22:15 CET 2007


 

 

> -----Ursprüngliche Nachricht-----

> Von: x264-devel-bounce at videolan.org [mailto:x264-devel-

> bounce at videolan.org] Im Auftrag von Ryan Dalzell

> Gesendet: Mittwoch, 17. Januar 2007 14:27

> An: x264-devel at videolan.org

> Betreff: [x264-devel] Re: AW: Re: Error Concealment

> 

> On Wednesday 17 January 2007 12:38, List, Peter wrote:

> > > -----Ursprüngliche Nachricht-----

> > > Von: x264-devel-bounce at videolan.org [mailto:x264-devel-

> > > bounce at videolan.org] Im Auftrag von Ryan Dalzell

> > > Gesendet: Mittwoch, 17. Januar 2007 13:28

> > > An: x264-devel at videolan.org

> > >

> > > Betreff: [x264-devel] Re: Error Concealment

> > >

> > > On Wednesday 17 January 2007 09:53, Awadh Bihari wrote:

> > > > Please let me know how to detect the slice loss at the decoder side.

> > > > It can only be detected if active sps/pps is not equal to sps/pps ?

> > > Due to arbitrary slice order and the fact that slice headers do not

> > > tell

> > > you how many macroblocks are in the slice (and assuming you are

> > > receiving

> > > the video data over a network), I believe that the only way is to

> > > actually

> > > decode each slice and count the number of macroblocks that it

> > > contributes

> > > to a picture. Then, after a suitable period of time to allow late

> > > packets

> > > to arrive, if you still haven't decoded all the macroblocks of a

> > > picture

> > > then you have lost some slices.

> >

> > I dont see why you need to count anything. The slice always tells you

> > where it's locates in the frame, so you just dump the macroblocks to

> > that place. If you have arbitrary slice order, things get more

> difficult,

> > but in principle it should be the same. You should be able to detect

> > when the next frame starts (by POC and/or frame_number). If that happens

> > you can finalize the previous frame, and that's it. Am I missing

> > something

> > here?

> 

> Yes, I think you are. Let's say that your receive six slices for a picture

> before a slice with a different POC arrives. Is this all the slices for

> that picture, or are there supposed to be seven and one got lost? You

> can't tell, short of decoding all the slices and counting the number of

> macroblocks provided.

 

I was expecting that my network interface would sort the packets for me. That may be naïve though. A delay would be involved as well in this case, but I need a receiving buffer anyways, right?

 

> This gets even worse when slices can be out of order across picture

> boundaries. I have searched high and low the spec and I cannot find a

> statement that precludes this from happening. (Of course, due to the lack

> of plain English in the spec it could be there.)

 

I will check if that is possible, but I definitely do not believe it is!

And yes, this standard is not that easy to read :-) 

 

> Also this could happen

> when packets become reordered due to network jitter or taking different

> routes. Then you don't even know that you have the last slice you are

> going

> to get when the POC changes. So you have to wait a while to see if there

> are more packets to arrive containing slices for the current picture.

> 

> IMO, it's pretty horrible 

 

I have heard a lot of different things about FMO (Flexible Macroblock Ordering). Some said it was absolutely easy to implement (on PC: simply have more than one input-buffer, one for every slice-group. Then, while decoding from left to right, top to bottom simply switch to the right buffer). Some others said it was horrible. 

Could you comment? 

 

> ASO is a good example of a little extra flexibility with not much real 

> value but with a high cost in real world systems.

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.videolan.org/pipermail/x264-devel/attachments/20070117/6cd6ed34/attachment.htm 


More information about the x264-devel mailing list