Hi,

On Wed, Jul 28, 2010 at 7:49 AM, Lakshman <lakshma...@gmail.com> wrote:
> Hello,
>
> There are two interfaces, MediaPlayerInterface and
>  MediaPlayerHWInterface.....both are derived from MediaPlayerBase class. If
> you wanna use AudioFlinger software mixer than you have to
> use MediaPlayerInterface(As per google, don't have much knowledge on mixer
> front). In setDataSource function we are creating AudioOutput,
>  if (!p->hardwareOutput()) {
>             mAudioOutput = new AudioOutput();
>
>  static_cast<MediaPlayerInterface*>(p.get())->setAudioSink(mAudioOutput);
>         }

So, AudioSink will be used for MediaPlayInterface, in this case how
would you handle a port reconfiguration in the AudioPlayer class?  A
port reconfiguration, in my case, happens when an AAC contains SBR
information.

So far, what I'm doing is closing, opening, and staring the AudioSink
with the new parameters, i.e. samplerate and it behaves as I expect.

Although, I'm not sure this is the correct way to handle this as I
would want to push this change to gerrit.  I'm also wondering why this
event is not handled yet.

> There is a check in AudioPlayer start() function to decide whether to use
> AudioSink (if it's already created) or create a new AudioTrack for rendering
> Audio.....mAudioSink->open() creates a new AudioTrack(mediaPlayerInterface)
> and configures the audio driver, ....Just by creating AudioTrack in
> AudioPlayer, I think you can render the Audio but I don't know abt
> internals...I'm just using MediaPlayerInterface.

I have forced AudioSink to be Null in AwesomePlayer's
AwesomePlayer::play_l() as follows:

if (mAudioSink != NULL) {
                mAudioPlayer = new AudioPlayer(NULL);

This, for experimental purposes, will do the same as you're doing and
it also works fine since AudioTrack has the setSampleRate method and
it works as I expect too.

Then, when creating AudioTrack it will be registered with
AudioFlinger, so in both cases, software and hardware outputs will use
AudioFlinger.  I know this information from AudioTrack.h class
definition.

I would prefer, in my case, to use AudioTrack since calling
setSampleRate looks cleaner than what I can do with AudioSink.

I may submit the patch to gerrit and see comments from the google engineer.

Thanks.

-- 
Daniel.



>
> Thanks and regards,
> -Lakshman
>
>
>
>
>
>
> On Wed, Jul 28, 2010 at 5:56 AM, Daniel Charles <dcharl...@gmail.com> wrote:
>>
>> Hi all,
>>
>> I'm interested on learning the difference between using AudioTrack and
>> AudioSink within Stagefreight's AudioPlayer class. I have seen that
>> inside AudioPlayer AudioTrack is used as long as AudioSink was not
>> created.  AudioSink gets created only when MediaPlayerService creates
>> a player and it has not a HardwareOutput.
>>
>> How could I use AudioTrack instead of AudioSink?  Which is the
>> difference between these two.  AFAIU, both are connected to
>> audioflinger somehow.
>>
>> I appreciate any hint on this.
>>
>> Thanks.
>>
>> --
>> Daniel.
>>
>> --
>> unsubscribe: android-porting+unsubscr...@googlegroups.com
>> website: http://groups.google.com/group/android-porting
>
>

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

Reply via email to