History log of /external/adhd/cras/src/server/cras_fmt_conv.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
82bbc68832fccb257d83a56e35a4d50b5f82a173 14-Mar-2016 Hsin-Yu Chao <hychao@chromium.org> CRAS: fmt_conv - Add channel remix support

For accessibility use we need to mix all channels of output
stream and then write to all output channels.
Reuse cras_fmt_conv to remix channels of PCM data according to
given conversion matrix. This new remix converter will be added
to the end of output format conversion chain.

fmt_conv1
stream1 ----------\
\ mix
O ----------> O --------> device
fmt_conv2 / channel remix
stream2 ----------/

...
fmt_convN
streamN ----------/

BUG=chromium:593218
TEST=unittest

Change-Id: I79e66fa890c1b9736ba8c1b16a6261b97e50adb6
Reviewed-on: https://chromium-review.googlesource.com/333250
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
963723441d52e64a9dc5c6bdaf8499622849cd5d 24-Jul-2015 Yao-wen Mao <yaowen@google.com> CRAS: cras_fmt_conv - add S24_3LE format support

Some devices only support S24_3LE format. This change adds support
for converting between S24_3LE and S16_LE, so those devices will
work with ChromeOS.

BUG=chromium:437836
TEST=Plug in a device using S24_3LE format (ex: Dragonfly DAC) and
play music, verify the sound is audiable.

Change-Id: I86dafd62f4d082b651dfc6f0603e3e1b5b1301c0
Reviewed-on: https://chromium-review.googlesource.com/288253
Commit-Ready: Yao-Wen Mao <yaowen@google.com>
Tested-by: Yao-Wen Mao <yaowen@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
4aca14a796836126b70e7cbb89b314c44cfa33d8 11-Jun-2015 Hsin-Yu Chao <hychao@chromium.org> CRAS: fmt_conv - Fix resample limit in chained SRC

When there are two SRC chained in a format converter, it's
required to calculate an intermediate resampler limit for the
first resampler. Although it's difficult to know the exact
number of how many frames converted in the second resampler
to use as the resampler limit, we should always make it rounded
to less than the actual number, or the first resampler may
convert too many frames that the second resampler couldn't
handle to fit into the final output limit.

BUG=chromium:460515
TEST=Apply whole patch set, open flash video(44.1KHz, 2048 fr)
and a web audio demo page(48KHz, 1024 fr) with two Jabra
speakerphones enabled. Verify audio does not stop when play
for an hour long.

Change-Id: I9876e738757fe2ece53da41bae41a7bb057cb723
Reviewed-on: https://chromium-review.googlesource.com/276980
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
4a50229ba5bc929822bfa4ca1fef6057e336aeba 22-Nov-2014 Dylan Reid <dgreid@chromium.org> CRAS: fmt_conv - don't restrict in and out to s16le

Allow both the input and output to be non-s16le. This will be useful
when playing to hardware that only support 24 or 32 bit samples such
as many USB DACS.

BUG=none
TEST=added unit test

Change-Id: Ia6858345958ec2febc716beea56b47868b5706e3
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/232080
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
b19777d062ee96cd6817fc534388914fed872a83 14-Nov-2014 Dylan Reid <dgreid@chromium.org> CRAS: fmt_conv - Add a default channel copy function

Adds a default channel conversion that copies a little of each
channel to all of the output channels. It divides the input signal by
the number of channels and adds each input channel. All output
channels play the same thing. This is slow, and attenuates the signal
heavily, but it is better than dropping it. It will only be used when
no better converter is found.

BUG=chromium:432425
TEST=play 8 channel test file from iis.fraunhofer.de

Change-Id: I6ada1281ae8b957f3a7d66d4c827d4eae9542e99
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/229730
/external/adhd/cras/src/server/cras_fmt_conv.c
084401521b297857987b2b3ece787c16cacdbbcc 03-Oct-2014 Hsin-Yu Chao <hychao@chromium.org> CRAS: linear_resampler - increase resample precision

When doing SRC, the actual rate is trimmed to the floor
integer before use and causing a precision lost. Multiply
the numerator and denominator of the rate factor by 100,
so it takes more than 1 day for the lost frames count to be
accumulated to 1024.

BUG=chromium:420589
TEST=Play youtube to two active devices

Change-Id: I6bcac51e01ea6deba16462b201c783ea1a85f96e
Reviewed-on: https://chromium-review.googlesource.com/221706
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
fbd2d15de5e0df9ba2d1144170f7b35cab4249f4 01-Oct-2014 Hsin-Yu Chao <hychao@chromium.org> CRAS: audio_thread - Integrate rate_estimator and linear resampler

Actually use the data report from rate estimator and apply to the
linear resampler in fmt_conv for non-master active devices.
The stream's sleep interval is updated to base on the master dev's
estimated rate.

BUG=chromium:420589
TEST=Play youtube on internal speaker and USB headset. Test
record by cras_test_client.

Change-Id: Ie4265f793bb972d9880cbad244c796a9b03db2b4
Reviewed-on: https://chromium-review.googlesource.com/220157
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
4da40ffba6ec3485b8e0a341c12dc2ee1d9cdeb6 20-Oct-2014 Hsin-Yu Chao <hychao@chromium.org> CRAS: fmt_conv - Always create a format converter

When config_fmt_converter() is called, always create a format
converter even the in/out format are identical. This allows the
linear_resampler check to determine if the format conversion is
needed depend on the estimated device rate.

BUG=chromium:420589
TEST=unittest. Play youtube and vocaroo.com

Change-Id: Ib3d1c7863917fb9fb583a9f283d729ac9ad2edb9
Reviewed-on: https://chromium-review.googlesource.com/224629
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
b3ebd1d69038925d04ba743aebfdbb8b9cf71d9b 17-Oct-2014 Hsin-Yu Chao <hychao@chromium.org> CRAS: fmt_conv - Add linear resampler to fmt_conv

Add a linear resampler to fmt_conv to adjust device rate skew.
The linear resampler will be used before or after the main
format conversion depend on stream's direction.

BUG=chromium:420589
TEST=unittest

Change-Id: Ib1c17a70e6327bfa5a3263af82e96cb52783f151
Reviewed-on: https://chromium-review.googlesource.com/224628
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c
ab2ca0b02e73c188df6277755f2fdee49f5a2657 20-Oct-2014 Hsin-Yu Chao <hychao@chromium.org> CRAS: move fmt_conv from common to server

fmt_conv will be integrated with the modules in
server side.

BUG=chromium:420589
TEST=None

Change-Id: I92abdaf3306e1ede4c5449ceed86543075f96cba
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/224626
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
/external/adhd/cras/src/server/cras_fmt_conv.c