75 Commits

Author SHA1 Message Date
Hongguang
9efb9dca21 Support frontend status readiness query.
The caller could use it to check whether frontend status is ready to
read or not.

Bug: 171540820
Fix: 171540820
Test: atest android.media.tv.tuner.cts on AIDL and HILD HALs
Change-Id: I55610e02412d6043e7fab91d1a2bf187a8e5e3ba
2022-01-21 13:17:45 -08:00
TreeHugger Robot
ff34ced59a Merge "Add API to filter out unnecessary PIDs from frontend output." 2022-01-21 18:24:12 +00:00
Hongguang
cfd146f5fb Add API to filter out unnecessary PIDs from frontend output.
Bug: 213287138
Fix: 213287138
Test: atest android.media.tv.tuner.cts on AIDL and HIDL HALs
Change-Id: Ie5317c080e43fac2371d6cea46cfc8e22a4e42cf
2022-01-21 05:57:59 +00:00
Kensuke Miyagi
cc4caab620 Merge "Enhance resource sharing and enable ownership transfer" 2022-01-13 05:06:48 +00:00
Hongguang
4d9772d803 Support enable/disable Frontends.
Bug: 210199978
Test: atest android.media.tv.tuner.cts on AIDL and HIDL HALs
Change-Id: I66379e726c3279e519e81a1f4bcfd2265b1aeb0a
2021-12-27 19:24:39 -08:00
Hongguang
38904f8b24 Add new features to tuner.
*) Support scan unlock event
*) Support get frontend hardware info.
*) Add scIndexMask to MediaEvent.
*) Support more AAC formats.
*) Move Lna to ITuner.

Bug: 203389496
Bug: 184017033
Bug: 202978951
Bug: 205265630
Bug: 203623028
Test: atest android.media.tv.tuner.cts on AIDL and HILD HALs.
Change-Id: Id1bf4f13e7afb5f4264bfc67ca7d822848c6e803
2021-12-23 04:41:39 +00:00
Kensuke Miyagi
b6580b4ac0 Enhance resource sharing and enable ownership transfer
New public APIs
- Tuner.closeFrontend()
  - Enables TIS app to continue using other resource while changing
    frontend resource
  - close & release Frontend resource when called on the owner, while
    it unshares Frontend resource when called on the sharee.
- Lnb.addCallback(Callback, Executor) and Lnb.removeCallback(Callback)
  - Enables TIS app to receive callback from the sharee
  - Also helps with the ownership transfer
- Tuner.transferOwner(Tuner newOwner)
  - Transfers the ownership of Frontend, CiCam, and Lnb resource

Additionally, added the following:
- Call nativeSetLnb() in requestFrontend() in case mLnb resource
  is already held. (this use case becomes a possibility now that we
  support Tuner.closeFrontend())

Bug: 192010866
Test: cts.TunerTest#testTransferOwner, testLnbAddAndRemoveSharee

Change-Id: I4c39c3726f0dd7bd1c153975ad01393ff2773005
2021-12-22 15:28:49 -08:00
Kensuke Miyagi
c08a08e327 Enable Frontend callback for sharee.
Bug: 209873032
Test: cts.TunerTest#testShareFrontendFromTuner

Change-Id: Iffd4cb5070e65fb298006d9813ce1a5b5c069a5b
2021-12-10 13:41:34 -08:00
Hongguang
bcca4dc8b9 Add SharedFilter to tuner frameworks.
The SharedFilter is used to share the Filter created by TIS to another
process. The TIS uses Filter.createSharedFilter() to create a token and
share it to another process. The new process will use
Tuner.openSharedFilter() to open that new token and create a
SharedFilter. The new process will be able to read the TIS owned
Filter's data with this new SharedFilter.

Bug: 196124225
Test: atest android.media.tv.tuner.cts on both AIDL and HIDL HAL.
Change-Id: Id93b30e4db242d35a3d1ae6023b967a90a78c448
2021-10-29 12:05:29 -07:00
Hongguang Chen
e6faed7ab7 Adjust tuner JNI types size.
This CL also cleans up the unused type casting after moving to AIDL HAL.

TODO: change frequency in java to long to cover frequency bigger than
INT32_MAX.

Bug: 195693712
Test: atest android.media.tv.tuner.cts
Change-Id: I9bc006882d29a27cddd0399a537154579eb0a0dc
2021-08-17 23:52:34 +00:00
Hongguang
56637e926b Migrate native tuner to new AIDL HAL.
After this change, tuner java and jni will not reply on HIDL anymore. It
also cleans up the the unused HIDL direct calls.

Bug: 191825295
Test: atest android.media.tv.tuner.cts
Change-Id: I0113565568119a79ed631b318cc8ccd32e0ae2ec
2021-08-07 00:00:38 +00:00
Kensuke Miyagi
7a45c0a315 Fix Tuner#shareFrontendFromTuner()
Bug: 195154259
Test: android.media.tv.tuner.cts.TunerTest (all 29 tests pass)
Change-Id: I965d928f8a394b89c98cc8990da804e9e804bbe3
2021-08-04 00:50:49 +00:00
Amy Zhang
15823c22a7 Fix TunerService/TunerClient implementation issues
1. TunerJNI is setting Tuner 1.1 Frontend extended settings regardless of the tuner hal version

2. SectionSettings section bit copy issue

Test: make
Bug: 185627837
Change-Id: I7ab03e2c96b6abd1439f6a277450005e625c0015
2021-04-16 16:21:56 -07:00
Amy Zhang
03079387da Check if the weak reference of java object is alive before using it
This CL get the global strong reference from the weak reference before
calling methods on a weak java object reference in Tuner JNI.

The method call would use the strong ref instead of the weak ref after
making sure it's non-null because weak ref is not garanteed non-null
even after the null check

see https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/functions.html#weak_global_references
for more details

Test: atest android.media.tv.tuner.cts
Bug: 176190716
Change-Id: I81215c18cda413c5ddee0e46480ce3783dfe4be9
2021-02-22 18:32:29 -08:00
Amy Zhang
90a50b4bfb Refactor JNI to remove ITimeFilter/IDemux/ITuner
Test: atest android.media.tv.tuner.cts on Cuttlefish
Bug: 174095851
Change-Id: I21ba3734602bd5246c2fb876e88cd2f77ec75632
2021-01-12 13:04:04 -08:00
Amy Zhang
d08c273617 Fully remove Frontend HAL from Tuner JNI and use Frontend Client instead
Test: atest android.media.tv.tuner.cts on Cuttlefish
Bug: 174095851
Change-Id: Ia011e776035827ca4dcf2ae9f4728513e5cf5a0a
2021-01-12 13:03:45 -08:00
Amy Zhang
d3d57b45a4 Refactor Tuner JNI and move the interaction with ILnb into LnbClient
Test: atest android.media.tv.tuner.cts on Cuttlefish
Bug: 174095851
Change-Id: I3903f62949aec0dac61388b356e7d7850a5a044c
2021-01-12 13:02:11 -08:00
Amy Zhang
210c26a974 Remove Lnb updating related implementation from Tuner JNI/java
Note: This was part of ag/13255478. Making it a separate CL can break
the dependency of the Tuner client changes on the frameworks/base
changes that require owner review from external teams.

Test: make
Bug: 174095851
Change-Id: Id40014b2ccd95b944e465b79571e113d8ed1a254
2021-01-12 12:57:04 -08:00
Amy Zhang
9a9ed60447 Add DvrClient and DvrClientCallback
Test: make libmedia_tv_tuner
Bug: 174095851
Change-Id: I0614a8ca7ca8d177da3f8ad07dbe70c3f57d6f1e
2021-01-05 13:16:40 -08:00
Amy Zhang
9b5831b0a1 [PARTIAL] Migrate Tuner JNI to use Client interfaces
Test: atest android.media.tv.tuner.cts
Test: local test on SampleTIS Cuttlefish

Bug: 174095851
Change-Id: I69e28132d6b5da34f99da4611b4fbc72e96913f8
2020-12-15 17:00:03 -08:00
Amy Zhang
a673468ed9 Add a FrontendClientCallback struct and enable callbacks in
FrontendClient

Test: make libmedia_tv_tuner
Bug: 174095851
Change-Id: I7b4c7f7a862835a7bb780ed52220e4f262c3cf98
2020-12-11 17:30:44 -08:00
Amy Zhang
bf68a16af5 Add an initial TunerClient/FrontendClient interface to interact between Tuner HIDL and Tuner JNI
Test: make libmedia_tv_tuner
Bug: 174095851
Change-Id: I8f1b0c79860eb4bf8d4d16595e8b798ad691288a
2020-12-11 17:25:57 -08:00
Amy Zhang
a6c094bed2 Add Ip Cid Change Event for Filter
Merge the configuration of scrambling status change and ip cid change
into one API - configureMonitorEvent

Previously we only report scrambling status change on configured status,
now we change it to report any status change along with the initial
status

Test: atest TunerTets
Bug: 153595125
Change-Id: Ie6e26774dd3f3ab5753746795188a258e1a55393
2020-11-18 23:23:12 -08:00
Amy Zhang
83258e4e69 Add RestartEvent in Filter
Restart event would be sent when a filter is reconfigured and
restarted.

After stopping to reconfigure the filter, all the filter events
should be discarded until restart and receive the start event
from the newly configured filter.

Test: atest android.media.tv.tuner.cts
Bug: 172593389
Change-Id: I1c7c4391d8477ae191e318b1830dd8afed86ed87
2020-11-13 10:58:24 -08:00
Amy Zhang
f10e2fcac2 Tuner JNI to use V1_1 ScanCallback
Test: make
Bug: 158818695
Change-Id: Ifafaed8ad581582822da19d683002c2692737a4a
2020-10-19 16:54:30 -07:00
Amy Zhang
07a2704af9 Tuner JNI to use the extended frontend status types and build up extended
status struct

Test: make -j44 dist
Bug: 158818695
Change-Id: Ic8e34ec4cf024c4d55ead3dca2d37dd84a19c7d5
2020-10-19 19:38:37 +00:00
Amy Zhang
d84c2d300d GetDtmb Settings and Capabilities in Tuner JNI
DTMB is a new frontend type added in Tuner 1.1
Tuner java Framework and Tuner JNI are changed to
handle the new DTMB Settings and Capabilites

Test: atest android.media.tv.tuner.cts
Bug: 159064654
Change-Id: I25209eb4da4f6790765299c95442f6363ef4cf31
2020-10-15 15:07:57 +00:00
Amy Zhang
c3719e9c56 Enable Tuner JNI to use Extended Frontend Settings
Tuner JNI would call tune_1_1 and scan_1_1 when:
1. IFrontend 1.1 implementation exists
and 2. Frontend Extended Settings are set from Tuner Java

Otherwise tune and scan in Tuner 1.0 would be called.

Test: atest android.media.tv.tuner.cts
Bug: 158818695
Change-Id: I477642c5623d8565fd05cbcb8789a2e09b074890
2020-10-14 10:53:00 -07:00
Amy Zhang
880743e346 Merge "Support shared av memory handle in Tuner JNI" 2020-10-14 17:15:15 +00:00
Amy Zhang
ca365f2fc9 Support shared av memory handle in Tuner JNI
In the MediaEvent of AV filters, the AV memory handle is mapped/unmapped on each event.
If the vendor allocates a persistent memory block, and use MediaEvent.offset to access the data,
the mapping change is unnecessary.

To improve this, a new API to get shared AV Memory is introduced in
Tuner HAL 1.1.

Tuner JNI queries the sharedAvMemory Handle when the media filter is
opened. It builds up linear block through either shared or independent
memory block by checking the memory handle fd number.

Test: make
Bug: 162013047
Bug: 157143515
Bug: 156664393
Change-Id: I5bfe3a8f4c26b5789212f56709b70c512ed15a0c
2020-10-13 18:54:12 -07:00
Amy Zhang
646c1129ad Add link/unlinkFrontendToCiCam APIs in Tuner java
These APIs are only supported in Tuner 1.1 or higher

Test: atest android.media.tv.tuner.cts
Bug: 158818696
Change-Id: I1df5b8b908455d47dbe183070456b15116b75cb7
2020-10-13 18:54:04 -07:00
Amy Zhang
7b3b578d50 Add TunerVersionChecker to expose the Tuner HAL implementation version
This can help Tuner java/cts get the information of the Tuner HAL
implementation version and notify the client on the availability of
the APIs in different versions or test with different expected result.

Users can all access getTunerVersion to get the information.

Test: atest android.media.tv.tuner.cts
Bug: 158816517
Bug: 164449999
Change-Id: I0b6e4c226e696ca7f94dff7d2c9a59f57af7e13a
2020-10-13 14:30:35 -07:00
Amy Zhang
b13e3042f3 Make Tuner java framework and Tuner JNI adopt Tuner HAL 1.1
Please see the Tuner HAL 1.1 design doc here:
go/android_tuner_hal_1.1

In this CL, the Tuner framework and JNI start to use the
@1.1::IFilter.getId64Bit() API and @1.1::IFilterCallback.

Currently the 1.1 IFilterCallback passes two new 1.1 record filter
events: DemuxFilterTsRecordEvent and DemuxFilterMmtpRecordEvent.

Tuner Framework exposes a new API: getId64Bit() which calls
the native getId64Bit. Also Filter java will be using long id
instead of the previous int id.

The FilterCallback interface remains unchanged but the TsRecordEvent
and the MmtpRecordEvent carry more variables to pass the extra info
in version 1.1.
When the HAL implementation is on version 1.0 and calls
onFilterEvent, it still uses the extended TsRecordEvent and
MmtpRecordEvent but the 1.1 field will be set to invalid.

Related HAL interface can be referred here:
hardware/interfaces/tv/tuner/1.1

Test: make -j44 dist, atest android.media.tv.tuner.cts
Bug: b/159058358
Bug: 158816517

Change-Id: I8d52c0b2031eed9c54909e5bf233137c56eeb78f
2020-10-13 14:28:31 -07:00
Henry Fang
0a94a23c2a free weakref to linearblock when it is destroy
bug: 168331789
Test: Manual
Change-Id: Iee1b2618bd5c970b728dbc0301b84ff43debde58
2020-09-16 15:38:31 -07:00
shubang
df82804342 Tuner JNI: Correct memcpy of C2DataIdInfo
Bug: 162778666
Test: mannual test by MTK
Change-Id: Ic97717e5fc32d97837e218fe769087b5abece2cb
2020-08-03 16:10:33 -07:00
shubang
c84fe12f1d Fix MediaEvent release issue
Bug: 158876323
Test: make;
Change-Id: Idedf41620b5a32ca552836d00b1db78adcfd1a7f
2020-06-17 14:57:10 -07:00
shubang
3aef4fe424 Tuner JNI: linearBlock and OnDestroyNotify
referred to ag/10877916 by Henry quxiangfang@

Bug: 139308734
Test: mmm
Change-Id: I7574d27cb1f582a5556e22eac4fff87335230b00
2020-04-27 13:18:46 -07:00
shubang
b3bfffeb97 Tuner JNI: setLnb and close()
Bug: 139308734
Test: mmm
Change-Id: I48ead59a638d83d2bfd9d8edabb0858715f0d473
2020-04-22 14:44:46 -07:00
shubang
2f9cab383b Tuner FW: handle release frontend
This can unblock tune/scan CTS test cases.
If a frontend resource is acquired in a test case and not released,
it cannot be used by another test case.

Bug: 150952758
Test: atest android.media.tv.tuner.cts.TunerTest
Change-Id: Ib9bab003fc81fe008091a9d1aaefc43e454c3230
2020-04-15 21:47:29 -07:00
shubang
66cc3aa800 Fix tuner JNI breakage due to recent changes
Bug: 150952758
Test: atest android.media.tv.tuner.cts.TunerTest
Change-Id: I639c82dc6f18e4fd8234809bd9beec5e61e06868
2020-04-06 22:40:04 -07:00
shubang
0dc8394e31 Tuner API: set Frontend and Lnb info to TRM
Bug: 139308734
Test: mmm
Change-Id: I17e198e150b453fec6440264c15b10abc2856a11
2020-04-06 18:36:25 +00:00
shubang
d295be0576 Tuner JNI: LnbCallback
and demux.setFrontendDataSource

Bug: 139308734
Test: mmm
Change-Id: I99e0c8536884815e8b9b0f778a378bb69a5f9540
2020-04-03 17:57:24 +00:00
TreeHugger Robot
69bbfca9c2 Merge "Tuner JNI: getFrontendInfo" into rvc-dev 2020-04-02 21:24:00 +00:00
shubang
b83f823a1f Tuner JNI: getFrontendInfo
Bug: 139308734
Test: mmm;
Change-Id: I51256798ca8dd1a67d1c53a8839610289dd2e207
2020-03-31 17:57:54 +00:00
shubang
431e561fda Tuner JNI: Dvr and DvrCallback
Bug: 139308734
Test: mmm
Change-Id: I2ea2d2e8b8309a70f9aa3dfeb6a3025c7e515afd
2020-03-30 21:27:52 -07:00
shubang
c4b45701aa Tuner JNI: getDemuxCaps
Bug: 139308734
Test: mmm;
Change-Id: I8c81cc77a157b3d8741de78f60878d79f18c0daa
2020-03-23 18:48:12 -07:00
TreeHugger Robot
fb60f4e159 Merge "Tuner JNI: split dvr to DvrRecord & DvrPlayback" into rvc-dev 2020-03-11 23:08:30 +00:00
shubang
757602f7ed Implement Tuner.openLnbByName()
Bug: 149786702
Test: mmm;
Change-Id: I37fd9dd6ebc15962db70f81887184135974268e1
2020-03-10 17:56:40 -07:00
shubang
5637a6636c Tuner JNI: split dvr to DvrRecord & DvrPlayback
Bug: 139308734
Test: make; acloud;
Change-Id: Iac1d131663bf1e6b859cd37f629d9ef7c0170184
2020-03-10 15:51:35 -07:00
TreeHugger Robot
f4d115b1c5 Merge "Tuner JNI: FilterCallback" into rvc-dev 2020-03-10 22:29:16 +00:00