Video fast update on iMX53

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Video fast update on iMX53

1,089 Views
rjongbloed
Contributor II

There are actually two parts to this question:

How can the application be informed of a decoding error in mfw_vpudecoder?

And much more importantly, how to force mfw_vpuencoder to immediately send a new key frame (aka Intra-frame) ?

Background:

When transmitting video over an Internet connection, packets get lost. If this happens the decoder fails and you can get artefacts in the picture. This remains until the next key frame refreshes the whole picture, which can be many seconds. To speed this up protocols such as SIP/H.323 have a fast update mechanism, but this requires that we can force the decoder to send a new key frame. This clears up the corrupted picture as soon as possible, improving the user experience.

Labels (3)
0 Kudos
Reply
4 Replies

888 Views
LeonardoSandova
Specialist I

Hi Robert, this is what I think you can do:

1. You need a BUS (Chapter 7. Bus), this way the element can communicate messages to an app. In resume, Read the GStreamer Application Manual :smileyhappy:

2. For this feature, You may need to send an event to the pipeline, and this one has to be attended by the decoder, which in turn you can send the new key frame.

DaianeAngolini, do you think the key frame can be injected the way Robert mentioned?

Leo

0 Kudos
Reply

888 Views
daiane_angolini
NXP Employee
NXP Employee

Hi Leo, I don´t think it is implemented on the current source code, but I believe it may be implemented....

0 Kudos
Reply

888 Views
rjongbloed
Contributor II

I have a pipeline, I have a bus on that pipeline.

Now, what's the message to be sent?

What's the event I should receive?

gst-inpect of the modules do not have any events indicated, which is worrying.

0 Kudos
Reply

888 Views
LeonardoSandova
Specialist I

You need to create an application, using gstreamer/gobject/glib libraries. A pipeline is actually an object where you can attach to it a bus (another object); in turn, it has a switch statement all you need to specify which messages you are listening to.... About the message/event/signal types, I do not know, but this is the gstreamer way to communicate between application-pipeline (alias elements), there is no other way.

Leo

0 Kudos
Reply