Skip to content

[RFC] discussion on split both pipeline, PGA and EQ #77

Closed

Description

@aiChaoSONG

based on #10, I split "both" type pipeline into playback and capture pipelines, add pga and eq infomation. Here is the output:

pcm=DMIC16k;id=8;type=capture;pga=;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=16000;rate_max=16000;ch_min=2;ch_max=2;rate=16000;channel=2;dev=hw:0,8;
pcm=Port1;id=0;type=playback;pga=PGA1.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=0;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0;
pcm=Port1;id=0;type=capture;pga=PGA2.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=0;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0;
pcm=DMIC01;id=1;type=capture;pga=;eq=;fmts=S32_LE;fmt=S32_LE;rate_min=48000;rate_max=48000;ch_min=4;ch_max=4;rate=48000;channel=4;dev=hw:0,1;
pcm=HDMI1;id=2;type=playback;pga=PGA4.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,2;
pcm=HDMI2;id=3;type=playback;pga=PGA5.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,3;
pcm=HDMI3;id=4;type=playback;pga=PGA6.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,4;
pcm=Speakers;id=5;type=playback;pga=PGA7.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,5;

I need your input on these topic:

  • for pipeline without eq or pga, the output is eq=;, should we add some string here, eg, eq=none;
  • there is no 'both' type pipeline anymore, we can either compose one in bash script, or add a line from sof-tplgreader.py, which way you recommended?
  • any other topics is welcomed

Activity

  1. aiChaoSONG commented on Feb 13, 2020

    @aiChaoSONG
    Author

    @Bin-QA @xiulipan @fredoh9 give your suggestions and opinions here, thanks.

  2. xiulipan commented on Feb 13, 2020

    @xiulipan
    Contributor

    both type should be filtered by up-level wrapper @Bin-QA @aiChaoSONG could you work on this to add this in #10 to avoid regression.

    For the eq type thing. maybe we can just do something like if you do not have a comp type that we tracked, give nothing. If you have some, output it.

    pcm=Speakers;id=5;type=playback;pga=PGA7.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,5;
    =>
    pcm=Speakers;id=5;type=playback;pga=PGA7.0;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,5;

  3. aiChaoSONG commented on Feb 13, 2020

    @aiChaoSONG
    Author

    @xiulipan I am agree with point 2, but for the "both" type in tplgtool, I think we should keep it. because the playback and capture in one pcm is binded, and this info is coming from the pcm info in tplg pcm section. we cannot tag such pcm as playback or capture, bacause we do have pcm with both capabilities. and when we meet both type pcm, we seperate playback and capture info as two pipeline.
    My question is : should we output the both directly in sof-tplgreader.py, like this:

    pcm=Port1;id=0;type=playback;pga=PGA1.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=0;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0;
    pcm=Port1;id=0;type=capture;pga=PGA2.0;eq=;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=0;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0;
    pcm=Port1;id=0;type=both;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=0;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0;
    

    or we compose a both type pipeline in func_pipeline_export?

    • option 1: this can be easier to implement. and test case use sof-tplgreader.py fwpath -f type:playback -b blacklist -s0 -e to get all playback pipelines, same thing with capture pipelines. for test case want to use both, just change playback to both.
    • option 2: compose pcm=Port1;id=0;type=both;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=0;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0; with bash script, this is kind of difficult to implement than option 1, i think
  4. fredoh9 commented on Feb 13, 2020

    @fredoh9
    Contributor

    In my opinion, we need to treat PGA and EQ separately. Printing PGA name by default is OK but can we print eq component when the option is specified? And also for EQ we should expect multiple components. This is sof-apl-eq-pcm512x.tplg's graph.

    PCM0P -> BUF1.0 -> EQIIR1.0 -> BUF1.1 ->EQFIR1.0 -> BUF1.2 -> PGA1.0 -> BUF1.3 -> SSP5.OUT

    in this case, I would expect eq=EQIIR1.0;eq=EQFIR1.0 or eq=EQIIR1.0;EQFIR1.0. Either way is fine too me.

  5. aiChaoSONG commented on Feb 14, 2020

    @aiChaoSONG
    Author

    @fredoh9 don't worry about the eq, it will give you all eq component connected to specified pipeline

    pcm=Port5;id=0;type=playback;pga=PGA1.0;eq=EQIIR1.0 EQFIR1.0;fmts=S16_LE S24_LE S32_LE;fmt=S16_LE;rate_min=48000;rate_max=48000;ch_min=2;ch_max=2;rate=48000;channel=2;dev=hw:0,0;
    
  6. Bin-QA commented on Feb 20, 2020

    @Bin-QA
    Contributor

    @xiulipan @aiChaoSONG @keqiaozhang @libinyang @fredoh9 @stripes416
    we need to keep case: simultaneous-playback-capture after remove 'both'?
    Follow my new case: multiple-pause-resume, go though the pipeline combine from TPLG
    so if we modify the multiple-pipeline-capture & multiple-pipeline-playback
    They can also go though the pipeline, so the simultaneous case just a combine in the go though the pipeline
    we need to to keep simultaneous case ?

  7. aiChaoSONG commented on Feb 21, 2020

    @aiChaoSONG
    Author

    @fredoh9 all the PRs you need to implement EQ test are merged

  8. stripes416 commented on Mar 2, 2020

    @stripes416
    Contributor

    @xiulipan @aiChaoSONG @keqiaozhang @libinyang @fredoh9 @stripes416
    we need to keep case: simultaneous-playback-capture after remove 'both'?
    Follow my new case: multiple-pause-resume, go though the pipeline combine from TPLG
    so if we modify the multiple-pipeline-capture & multiple-pipeline-playback
    They can also go though the pipeline, so the simultaneous case just a combine in the go though the pipeline
    we need to to keep simultaneous case ?

    Once the multiple-pipeline-capture/playback tests get modified, I think we'll be in a better position to answer this question.

  9. aiChaoSONG commented on Mar 5, 2020

    @aiChaoSONG
    Author

    close for all done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions