summaryrefslogtreecommitdiff
path: root/audio/core/2.0/default/StreamIn.cpp
AgeCommit message (Collapse)Author
2018-11-28Audio HAL: Factorize V2 and V4 like libaudiohalKevin Rocard
Use the same technique developed for the simpler libaudiohal to factorize the audio HAL impl. Generated with script: set -euo pipefail cd hardware/interfaces/audio # Make 2.0 and 4.0 files mostly identical by removing all 2.0, V4.0... # and replacing it by CPP_VERSION and FILE_VERSION # This allow both implementation to be mostly identical, except for code difference # Also remove IncludeGuard.h as it will be included from compiler flag # Also update license to 2018 find -name *.cpp -o -name *h | grep -v -e service.cpp | xargs sed -Ei \ -e 's/(#.*)V[42]_0_(.*_H_?)$/\1\2/' \ -e 's/(LOG_TAG.*)[24]_0/\1/' \ -e '/#ifndef AUDIO_HAL_VERSION/,/#endif/d' \ -e '/^#.*def.*AUDIO_HAL_VERSION\b/d' \ -e's/V[42]_0/CPP_VERSION/' \ -e 's/(#include ).(android.*)[24].0(.*).$/\1PATH(\2FILE_VERSION\3)/' \ -e 's|(#include) .(.*)[24].0/(default/.*).$|\1 "\2\3"|' \ -e 's/\bAUDIO_HAL_VERSION\b/CPP_VERSION/' \ -e '/IncludeGuard.h/d' \ -e 's/(Copyright .C. 201)./\18/' # set MAJOR_VERSION instead of having a different macro for each version # this allow to do preprocessor arithmetic (eg: MAJOR_VERSION >= 4) for v in 2 4; do find -ipath '*/'$v'.0/*/Android.bp' | xargs sed -i -e '/cflags:/,/^$/d' -e '/vndk/{:a;/}/!{N;ba};d}' -e '$i\ cflags: [\ "-DMAJOR_VERSION='$v'",\ "-DMINOR_VERSION=0",\ "-include common/all-versions/VersionMacro.h",\ ]'; done # replace# ifdef VERSION_X by #if MAJOR_VERSION == X find -path *all-versions/*.h | xargs sed -Ei -e 's/def.*AUDIO_HAL_VERSION_([24])_0.*/ MAJOR_VERSION == \1/' \ -e 'T;s/ +/ /' # copy all-versions impl in each version impl find -path '*/[24].0/*.[hc]*' | grep -ve all-versions -e test | xargs -P99 -n4 sed -i -Ee '/include <.*all-versions.default/!b' \ -e 's#.*<#find -path */#' -e 's/>$/|xargs tail -n +16/' -e e # remove all-versions impl rm -r {core,effect}/all-versions/ # merge version impl into a single all-version for dir in core/*.0/vts/functional/*.0/ ;do dest=$(echo $dir | sed 's#/..0/#/all-versions/#') mkdir -p $dest mv -T $dir $dest done find -mindepth 3 -path '*/2.0/*' -a \( -name '*cpp' -o -name '*h' \) | grep -v 'all-versions' | sed -E 'h;s/2/4/g;H;s/4.0/all-versions/;s/4.0//;H;g;s/\n/ /g;'| xargs -P99 -L1 sh -c ' set -euo pipefail mkdir -p $(dirname $2); diff --old-group-format="#if MAJOR_VERSION == 2 %<#endif " \ --new-group-format="#if MAJOR_VERSION == 4 %>#endif " $0 $1 > $2 || true; rm $0 $1' # merge the X.0 Android.bp & OWNERS in the all-versions for dir in common effect core; do for sub in default vts/functional; do test -f $dir/2.0/$sub/Android.bp || continue awk 1 $dir/*.0/$sub/Android.bp >> $dir/all-versions/$sub/Android.bp # delete licenses except for the first one and add whitelines sed -i -e '/^}$/{N;/^}\n$/!s/\n/&\n/}' $dir/all-versions/$sub/Android.bp sed -i -e '1,17b;/^\/\//,/^$/{d}' $dir/all-versions/$sub/Android.bp done for sub in default vts; do test -d $dir/2.0/$sub || continue test -f $dir/2.0/$sub/OWNERS && awk 1 $dir/*.0/$sub/OWNERS | sort -u > $dir/all-versions/$sub/OWNERS || true rm -r $dir/*.0/$sub done done # delete all-versions-impl dependencies find -name 'Android.bp' | xargs sed -i -e '/all-versions-impl/d' # cleanup unused files rm common/all-versions/default/include/common/all-versions/default/HidlUtils* rm common/all-versions/util/include/common/all-versions/IncludeGuard.h find -depth -type d -empty -delete # Clamp consecutive number of empty lines to 2 find -name *.cpp -o -name *h | xargs sed -Ei ':a;/^\n*$/{N;ba};s/\n\n+/\n\n/' # transform #endif\n#if to #elif find -name *.cpp -o -name *h | xargs sed -i '/^#endif/{N;s/.*\n#if/#elif/}' # remove leftover include guard in cpp find -name *.cpp |xargs sed -Ei '/^#.*_H_?$/d' # apply clang-format find -name *cpp -o -name *h | xargs ../../../prebuilts/clang/host/linux-x86/clang-stable/bin/clang-format --style file -i # clang format breaks PATH(a/b) to PATH(a / b), remove the space surrounding / find -name *cpp -o -name *h | xargs sed -i "/#include PATH/s# / #/#g" Test: compile Bug: 118203066 Change-Id: I3692a444307afc5f71064fe0b9e6b8af3c9ff1dd Signed-off-by: Kevin Rocard <krocard@google.com>
2018-11-28Audio HAL: Cleanup implementationKevin Rocard
Rename files so that, if they are in a X.0 folder, their name does not contain that version number. That allows for easier copy paste when creating a new version. Conversion.h was included from the all-versions instead of the X.0 headers. This in incoherent with the other headers. Add VersionMacro.h that will be used in the follow up patch. Also remove shim from VNDK as only stable ABI&API libraries should be part of it. Test: Compile Bug: 118203066 Change-Id: I9cd77b3df5ccede5ae51c3cc94fab5939c51d9ef Signed-off-by: Kevin Rocard <krocard@google.com>
2018-04-20Audio: make core/4.0/default/Util.h version dependantKevin Rocard
This patch does not have any functional change. It refactors Util.h to make it version dependant. This is needed in the next patch to add a helper that uses HIDL types. This patch is the fixed first half of I41204c0807d2bd4675e941771cbc9a43d7d14855 that was reverted due to a merge conflict. Bug: 72873273 Bug: 69811500 Bug: 69010523 Test: playback and record for media and voice call Original-Change-Id: I41204c0807d2bd4675e941771cbc9a43d7d14855 Change-Id: Ie543519fa0dca62486b75f42bb0c8a93d6cad3c3 Signed-off-by: Kevin Rocard <krocard@google.com>
2018-04-19Revert "Audio: setParam improve status_t to Result consistency"Kevin Rocard
This commit broke sailfish build in V4 due to https://cs.corp.google.com/android/hardware/interfaces/audio/core/all-versions/default/include/core/all-versions/default/PrimaryDevice.impl.h?q=hardware/interfaces/audio/core/all-versions/default/include/core/all-versions/default/PrimaryDevice.impl.h:251 not being updated. This is really strange as 1) sailfish should not build the V4 code in the first place 2) walleye is not broken although it should be the broken code 3) neither treehugger nor my local builds found this issue Revert to give the time to investigate. This reverts commit 2c6755a00cbeb3ddb1e60b7ea42ae5eca7cbae8e. Reason for revert: <INSERT REASONING HERE> Change-Id: Ibf5270c15d52212a41b3b4eb4c0fcfe82a08fd6b
2018-04-17Audio: setParam improve status_t to Result consistencyKevin Rocard
The rest of the API (*::analyseStatus) returns NOT_SUPPORTED when the legacy API returns -ENOSYS. setParameter legacy -> treble shim did not follow this conversion due to the legacy API stating that for get_paramers, -ENOSYS should be returned if "the implementation does not accept a parameter change while the output is active but the parameter is acceptable otherwise", aka INVALID_STATE. Thus setParameter shim used to return - OK for OK - INVALID_STATE for -ENOSYS - INVALID_ARGUMENTS for everything else This leads to several problems: - an implementation of the legacy API can not report NOT_SUPPORTED - is inconsistent with the rest of the status_t conversion methods - shim methods implemented over getParameter can not distinguish failures error required by the .hal documentation Most importantly, on the system side, the Result is transformed to a status_t again but without any special logic for methods wrapping getParameter in the shim. This can not be changed as the system can not know which methods are implemented with a legacy wrapper under the Treble API boundary. Thus setParam now converts status_t to Result in the same way as all the other shim methods. Bug: 72873273 Bug: 69811500 Bug: 69010523 Test: playback and record for media and voice call Change-Id: I41204c0807d2bd4675e941771cbc9a43d7d14855 Merged-In: I41204c0807d2bd4675e941771cbc9a43d7d14855 Signed-off-by: Kevin Rocard <krocard@google.com>
2018-01-20Audio V4: Rename audio/device to audio/coreKevin Rocard
The name device has already too many meaning, thus rename the main audio api to core. Bug: 38184704 Test: compile Change-Id: I178dfef05af8f8579196affbe2cbc5f6c3f9af55 Signed-off-by: Kevin Rocard <krocard@google.com>