Sunday, April 14, 2013

Why StagefrightPlayer and AwesomePlayers are available? why the application cant directly calling the AwesomePlayer instead of StagefrightPlayer and internally how Stagefrightplayer is calling AwesomePlayer ???

In OpenCore also, as similar to AwesomePlayer we will have PlayerDriver.
All things will be routed via PlayerDriver from PvPlayer class.

  AwesomePlayer is a proxy to stagefrightPlayer . It is using pimpl design pattern.This is to reduce the header file resources needed.
If we have to use AwesomePlayer directly we need to include more header files related with Awesomeplayer. This is covered in stagefright player.So the user can use stagefrightplayer.h header file without
adding multiple headers files in libmediaplayer/mediaplayer.cpp

 To know more about PIMPL design pattern:
http://www.codeproject.com/Articles/17536/Use-of-PIMPL-Design-Pattern

Labels: , ,

Friday, July 27, 2012

What is missing in Android Stagefright/NuPlayer RTSP streaming ?

1.Jitter buffer handling
2.RTCP handling
3.Error correction and feedback through RTCP Sender report/receiver report

Labels: , ,

What are all the buffering mechanism available in OMX ?
   1.AllocateBuffer - Allocates buffer
   2.UseBuffer - use the buffer given by the downstream component. Example using the video renderer's memory to fill the decoded data

When the input buffer or output buffer of the component should be released?
        Once the OMX input buffer is used and ready to release,  it will return the EMPTY_BUFFER_DONE event to the stagefright or who is owning the buffer. Once the IL client received the EMPTY_BUFFER_DONE event, it can release the input buffer.
     OMX  IL client will receives the FILL_BUFFER_DONE event from OMX component once the output buffer is used and ready to release. Once IL client received the FILL_BUFFER_DONE event, IL client will frees the output buffer.

How Seek operation is executed in Stagefright ?
        Once the application is giving seek, Thru stagefright player, awesome player calls the seek() function.

How seek operation is notified to the parser or Extractor ?
     within Awesomeplayer, SeekTo() fn is called, it will sets the ReadOptions structure values as seek mode set and seek timestamp is also stored in this structure.

     Awesomeplayer while calling decoder, it will  invoke decoder as below

            mVideoSource->read(&decodedBuffer, &readOptions);

This readoptions value is passed to decoder and decoder will have the pointer to the MPEG4/MKV extractor's media source.
       Decoder will invoke read() fn of the audio/video source of the extractor by passing readOptions.

within parser's media source ->read() fn, it will checks whether the seek mode is set or not. if it is set, it will
do seek to seektimestamp through parser.


                 

         

 

     

Labels: , ,