From e21d7f500f034c61da605c80f9852bca5beb35f6 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Fri, 5 Jun 2015 17:49:25 -0700 Subject: [PATCH] media: change parameters for OMX_EventOutputRendered This allows batching of rendered events. Bug: 20503131 Change-Id: I3b319317c0434eb225198f8c4bf716edf68079a2 --- include/media/openmax/OMX_Core.h | 10 ++++++++-- include/media/openmax/OMX_VideoExt.h | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/media/openmax/OMX_Core.h b/include/media/openmax/OMX_Core.h index 4fc1546fb..521c223b0 100644 --- a/include/media/openmax/OMX_Core.h +++ b/include/media/openmax/OMX_Core.h @@ -510,8 +510,14 @@ typedef enum OMX_EVENTTYPE OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ /** Event when tunneled decoder has rendered an output - * nData1 must contain the lower 32-bits of the buffer timestamp - * nData2 must contain the upper 32-bits of the buffer timestamp + * nData1 must contain the number of timestamps returned + * pEventData must point to an array of the OMX_VIDEO_RENDEREVENTTYPE structs containing the + * render-timestamps of each frame. Component may batch rendered timestamps using this event, + * but must signal the event no more than 40ms after the first frame in the batch. The frames + * must be ordered by system timestamp inside and across batches. + * + * If component is doing frame-rate conversion, it must signal the render time of each + * converted frame, and must interpolate media timestamps for in-between frames. */ OMX_EventOutputRendered = 0x7F000001, OMX_EventMax = 0x7FFFFFFF diff --git a/include/media/openmax/OMX_VideoExt.h b/include/media/openmax/OMX_VideoExt.h index 3c97e14a7..34c040574 100644 --- a/include/media/openmax/OMX_VideoExt.h +++ b/include/media/openmax/OMX_VideoExt.h @@ -203,6 +203,12 @@ typedef struct OMX_VIDEO_SLICESEGMENTSTYPE { OMX_BOOL bEnableLoopFilterAcrossSlices; } OMX_VIDEO_SLICESEGMENTSTYPE; +/** Structure to return timestamps of rendered output frames for tunneled components */ +typedef struct OMX_VIDEO_RENDEREVENTTYPE { + OMX_S64 nMediaTimeUs; // timestamp of rendered video frame + OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered +} OMX_VIDEO_RENDEREVENTTYPE; + #ifdef __cplusplus } #endif /* __cplusplus */