From: Rhodri James on
On Mon, 22 Feb 2010 10:48:55 -0000, DANNY <danijel.gvero(a)gmail.com> wrote:

> On Feb 21, 1:54 am, Tim Roberts <t...(a)probo.com> wrote:
>> DANNY <danijel.gv...(a)gmail.com> wrote:
>>
>> >If I want to have a MPEG-4/10 coded video and stream it through the
>> >network and than have the same video on the client side, what should I
>> >use and of course I don't want to have raw MPEG data, because than I
>> >couldn't extract the frames to manipulate them.
>>
>> If you want to manipulate the frames (as bitmaps), then you have little
>> choice but to decode the MPEG as you receive it, manipulate the bitmaps,
>> and re-encode it back to MPEG.
>>
>> That's going to take a fair amount of time...
>> --
>> Tim Roberts, t...(a)probo.com
>> Providenza & Boekelheide, Inc.
>
> Yes, well beside bieng time-consuming, that is also inappropriate for
> me,
> because I want to have clip that would be streamed across the network
> and
> have the same GoP on the client side as the original-because I want to
> see
> what is the effect of errors on different GoP sizes. I would
> manipuleta the
> received clip just in the way that (if there are too many errors) I
> would
> stop displaying untill the next I frame.....I cant find a way to do
> that....is there a way?

Could you say a bit more about what you mean when you say "the effect of
errors"? It's easy enough to introduce bit errors into a data file (just
flip random bits), but I'm not clear what it is you're trying to measure.

--
Rhodri James *-* Wildebeeste Herder to the Masses
From: Tim Roberts on
DANNY <danijel.gvero(a)gmail.com> wrote:
>
>Yes, well beside bieng time-consuming, that is also inappropriate
>for me, because I want to have clip that would be streamed across
>the network and have the same GoP on the client side as the
>original-because I want to see what is the effect of errors on
>different GoP sizes. I would manipuleta the received clip just
>in the way that (if there are too many errors) I would
>stop displaying untill the next I frame.....I cant find a way to do
>that....is there a way?

Sure. You can do a partial decode yourself, scan for the start of frame
markers, pull the I/P/B state from that, and periodically "forget" to pass
the buffer through. Your filter could have MPEG in and out.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: DANNY on
@James I am thinkinhg about effect of errors that are within the
sequence of P frames. Where the P frames have only the information
about the changes in previous frames, so that errors are present until
the next I frame. So I would like to see how is this seen in different
GoP sized clips.

@Tim Thanks for the advice, now I will try to do that so I have a lot
of work in front of me. I will post any problems if they occure.

Guys thank you again for the help!
From: Rhodri James on
On Tue, 23 Feb 2010 10:39:21 -0000, DANNY <danijel.gvero(a)gmail.com> wrote:

> @James I am thinkinhg about effect of errors that are within the
> sequence of P frames. Where the P frames have only the information
> about the changes in previous frames, so that errors are present until
> the next I frame. So I would like to see how is this seen in different
> GoP sized clips.

Ah, I see. What I'd suggest you do is to encode your video clip at
various GOP sizes (you'll want some quite extreme ones for comparison),
then write a little program that reads in the file byte by byte and
randomly corrupts the data as it goes through. "tsplay" from the tstools
suite that I mentioned earlier will do that for you (because it was very
handy for testing the robustness of our decoders). Then watch the results
using VLC or similar.

My recollection is that when the image isn't static, P frames tend to have
enough intra-coded blocks that corrupted video data doesn't have as much
effect as you might think. I've dealt with streams that had ten seconds
or more between I frames, and starting at a random spot (simulating
changing channel on your digital TV) builds up an intelligible (if
obviously wrong) image surprisingly quickly.

PS: my first name is Rhodri, not James. Don't worry, it catches a lot of
people out.

--
Rhodri James *-* Wildebeeste Herder to the Masses
From: DANNY on
On Feb 24, 3:11 am, "Rhodri James" <rho...(a)wildebst.demon.co.uk>
wrote:
> On Tue, 23 Feb 2010 10:39:21 -0000, DANNY <danijel.gv...(a)gmail.com> wrote:
> > @James I am thinkinhg about effect of errors that are within the
> > sequence of P frames. Where the P frames have only the information
> > about the changes in previous frames, so that errors are present until
> > the next Iframe. So I would like to see how is this seen in different
> > GoP sized clips.
>
> Ah, I see.  What I'd suggest you do is to encode your video clip at  
> various GOP sizes (you'll want some quite extreme ones for comparison),  
> then write a little program that reads in the file byte by byte and  
> randomly corrupts the data as it goes through.  "tsplay" from the tstools  
> suite that I mentioned earlier will do that for you (because it was very  
> handy for testing the robustness of our decoders).  Then watch the results  
> using VLC or similar.
>
> My recollection is that when the image isn't static, P frames tend to have  
> enough intra-coded blocks that corrupted video data doesn't have as much  
> effect as you might think.  I've dealt with streams that had ten seconds  
> or more between I frames, and starting at a random spot (simulating  
> changing channel on your digital TV) builds up an intelligible (if  
> obviously wrong) image surprisingly quickly.
>
> PS: my first name is Rhodri, not James.  Don't worry, it catches a lot of  
> people out.
>
> --
> Rhodri James *-* Wildebeeste Herder to the Masses

Well for my simulation of errors I am thinking on using the WANem
(Wide Area Netwrok Emulator) which has a function to simulate dellay,
jitter etc.. http://wanem.sourceforge.net/
I have been downloading the clips from youtube and I surprisengly saw
that I frame occures after 300 frames(at 15fps-so that means after 20
seconds)! That was quite unusal for my perception of the purpose of I
frame, but then I figured out that (as you mentioned) P frames include
intra-coded blocks which hide the effect of the errors.

The goal of my project is to make a program which plays the corrupted
video after being out thru error concealment, and in case when errors
overcome some threshold error value the program doesn't paly any more
frames until the I frame occures and then I would figure out the
optimal threshold value for the different GoP sizes as well as
different content of the clip.