diff --git a/audiodecoder/current/com/rdk/hal/audiodecoder/FrameMetadata.aidl b/audiodecoder/current/com/rdk/hal/audiodecoder/FrameMetadata.aidl index b12f5dc4..036cb674 100644 --- a/audiodecoder/current/com/rdk/hal/audiodecoder/FrameMetadata.aidl +++ b/audiodecoder/current/com/rdk/hal/audiodecoder/FrameMetadata.aidl @@ -46,7 +46,7 @@ parcelable FrameMetadata { * The buffer contains Dolby Atmos audio and metadata. */ boolean isDolbyAtmos; - + /** * Audio trimming to use on presentation. */ @@ -59,7 +59,10 @@ parcelable FrameMetadata { boolean lowLatency; /** - * End of stream indicator. + * End of stream flag for decoder output. + * Set to true on the final frame output callback after IAudioDecoderController.signalEOS() has been invoked, once all queued frames have been output. + * On an EOS-only callback (where the frame buffer handle is invalid), only this field is guaranteed to be meaningful. + * All other metadata fields are undefined and must not be interpreted by the client on such a callback. */ boolean endOfStream; diff --git a/audiodecoder/current/com/rdk/hal/audiodecoder/IAudioDecoderController.aidl b/audiodecoder/current/com/rdk/hal/audiodecoder/IAudioDecoderController.aidl index d93f8ad6..87e40c31 100644 --- a/audiodecoder/current/com/rdk/hal/audiodecoder/IAudioDecoderController.aidl +++ b/audiodecoder/current/com/rdk/hal/audiodecoder/IAudioDecoderController.aidl @@ -109,7 +109,7 @@ interface IAudioDecoderController { * * @returns boolean * @retval true Buffer successfully queued for decoding. Buffer ownership transfers to HAL. - * @retval false Internal decode buffer queue is full. Buffer ownership remains with caller. + * @retval false Internal decode buffer queue is full or signalEOS is called. Buffer ownership remains with caller. * * @exception binder::Status::Exception::EX_NONE for success * @exception binder::Status::Exception::EX_ILLEGAL_STATE @@ -156,7 +156,8 @@ interface IAudioDecoderController { * The audio decoder must be in a state of `STARTED`. * Any frames held by the decoder should continue to be decoded and output. * No more audio buffers are expected to be delivered to the audio decoder after - * `signalEOS()` has been called unless the decoder is first flushed or stopped and started again. + * `signalEOS()` has been called unless the decoder is first flushed or stopped and started again. + * Any subsequent `decodeBuffer()` call in this state shall return false. * * An `IAudioDecoderControllerListener.onFrameOutput()` callback with `FrameMetadata.endOfStream` * must be set to true after all audio frames have been output. diff --git a/videodecoder/current/com/rdk/hal/videodecoder/FrameMetadata.aidl b/videodecoder/current/com/rdk/hal/videodecoder/FrameMetadata.aidl index 0cbe3c5f..5f3fb4bd 100644 --- a/videodecoder/current/com/rdk/hal/videodecoder/FrameMetadata.aidl +++ b/videodecoder/current/com/rdk/hal/videodecoder/FrameMetadata.aidl @@ -104,7 +104,11 @@ parcelable FrameMetadata { int frameRateDenominator; /** - * End of stream marker found in the video bitstream. + * End of stream flag for decoder output. + * Set to true on the onFrameOutput() callback when an EOS marker is detected in the video bitstream; the frame buffer handle is valid and all metadata fields are meaningful. + * Set to true on the final frame output callback after IVideoDecoderController.signalEOS(), once all queued frames have been output. + * On an EOS-only callback (where the frame buffer handle is invalid), only this field is guaranteed to be meaningful. + * All other metadata fields are undefined and must not be interpreted by the client on such a callback. */ boolean endOfStream; diff --git a/videodecoder/current/com/rdk/hal/videodecoder/IVideoDecoderController.aidl b/videodecoder/current/com/rdk/hal/videodecoder/IVideoDecoderController.aidl index 7a22e5ad..8e6dfcf1 100644 --- a/videodecoder/current/com/rdk/hal/videodecoder/IVideoDecoderController.aidl +++ b/videodecoder/current/com/rdk/hal/videodecoder/IVideoDecoderController.aidl @@ -107,7 +107,7 @@ interface IVideoDecoderController * * @returns boolean * @retval true Buffer successfully queued for decoding. Buffer ownership transfers to HAL. - * @retval false Internal decode buffer queue is full. Buffer ownership remains with caller. + * @retval false Internal decode buffer queue is full or signalEOS is called. Buffer ownership remains with caller. * * @exception binder::Status::Exception::EX_NONE for success * @exception binder::Status::Exception::EX_ILLEGAL_STATE @@ -158,6 +158,7 @@ interface IVideoDecoderController * * No more AV buffers are expected to be delivered to the Video Decoder after * `signalEOS()` has been called unless the decoder is first flushed or stopped and started again. + * Any subsequent `decodeBuffer()` call in this state shall return false. * * An `IVideoDecoderControllerListener.onFrameOutput()` callback with `FrameMetadata.endOfStream` * must be set to true after all video frames have been output.