diff --git a/current.txt b/current.txt index be71351ac5..c288a06b13 100644 --- a/current.txt +++ b/current.txt @@ -487,7 +487,7 @@ c3f831a66d5815baf74f5b82fe79cf099542ddae4dfab3f388e1d41828e794fc android.hardwar dd1ec219f5d2e2b33c6c0bcb92e63bbedb36f7c716413462848f6b6ae74fc864 android.hardware.health.storage@1.0::IStorage 2b4a14661e6a38617b7dd0c6ebb66a56a90e564674ac7697a14cb8a0cab92b2f android.hardware.health.storage@1.0::types 30006fde4cb1f255f2530208728bff692100411b20af5b66fa31a9196d51f00b android.hardware.input.classifier@1.0::IInputClassifier -97d8757bb05eb23d6a218bda374e095dfbb064c47714e2f859963c11f433e822 android.hardware.input.common@1.0::types +0300c7667030da36c3de585f176ce18ff4b0d2615446d4930f331097378c06ef android.hardware.input.common@1.0::types 24ae089981d58bc4cc74d75a6055bf357338ae6744ce1b467c5b4a9c470aba6d android.hardware.media.bufferpool@2.0::IAccessor 897f45ee7db24ef227dea83ca3e4de72d53ff6bb7adc7983c90a650a1a6ff576 android.hardware.media.bufferpool@2.0::IClientManager aee53b2865b4f7939fb3df6fae758d9750c14f93dd454b479fc74aa7978fda4f android.hardware.media.bufferpool@2.0::IConnection diff --git a/input/common/1.0/types.hal b/input/common/1.0/types.hal index 1a07f3b76d..9ad368b3b6 100644 --- a/input/common/1.0/types.hal +++ b/input/common/1.0/types.hal @@ -685,20 +685,20 @@ enum Flag : int32_t { * Touch heatmap. * * The array is a 2-D row-major matrix with dimensions (height, width). - * The heatmap data does not rotate when device orientation changes. + * The heatmap data is rotated when device orientation changes. * * Example: * * If the data in the array is: * data[i] = i for i in 0 .. 59, - * then it can be represented as follows: + * then it can be represented as a 10 x 6 matrix: * - * <-- width -- > + * <-- width --> * 0 1 2 3 4 5 ^ * 6 7 8 9 10 11 | - * 12 12 14 15 16 17 | - * 18 ... 23 | height - * 24 ... 29 | + * 12 13 14 15 16 17 | + * 18 ... 23 | + * 24 ... 29 | height * 30 ... 35 | * 36 ... 41 | * 42 ... 47 | @@ -708,16 +708,33 @@ enum Flag : int32_t { * Looking at the device in standard portrait orientation, * the element "0" is the top left of the screen, * "5" is at the top right, and "59" is the bottom right. - * Here width=6, and height=10. + * Here height=10 and width=6. + * + * If the screen orientation changes to landscape (a 90 degree orientation + * change), the frame's dimensions will become 6 x 10 + * and the data will look as follows: + * 54 48 42 36 30 24 18 12 6 0 ^ + * ... 13 7 1 | + * ... 14 8 2 | height + * ... 15 9 3 | + * ... 16 10 4 | + * 59 53 47 41 35 29 23 17 11 5 v + * <-- width --> + * + * Here the element "0" is at the physical top left of the unrotated screen. + * + * Since the coordinates of a MotionEvent are also adjusted based on the + * orientation, the rotation of the video frame data ensures that + * the axes for MotionEvent and VideoFrame data are consistent. */ struct VideoFrame { /** * Video frame data. - * Size of the data is width * height. + * Size of the data is height * width. */ vec data; - uint32_t width; uint32_t height; + uint32_t width; /** * Time at which the frame was collected, in nanoseconds. * Measured with the same clock that is used to populate MotionEvent times.