[TTVD] Ensure lazy frame is generated after buffer is released 18/322318/3
authorJakub Gajownik <j.gajownik2@samsung.com>
Fri, 4 Apr 2025 10:46:32 +0000 (12:46 +0200)
committerBot Blink <blinkbot@samsung.com>
Tue, 8 Apr 2025 09:18:56 +0000 (09:18 +0000)
Is was possible before, that lazy frame was not generated
depite having decoded frame available in pool:
1. Push multiple buffers into decoder.
2. Push EOS buffer.
3. Observe that only some of the frames were returned
   using lazy frame mechanism (reaching pool size).
4. Release some of the returned frames.
After that, we should have next frames returned, but it
won't happen.

To fix this issue, we should run lazy frame processing
after previously released frame is returned to pool.

Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-684
Change-Id: I93a9497f51b0309dee3a08f51da65ae1bfb9fe9f
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
media/filters/tizen/ttvd_video_decoder_impl.cc

index bc1c539e3fb0b152390019c2759dbbb17daa518c..a82c89744b218746855edf9b3e8e63a28ce5218b 100644 (file)
@@ -1102,6 +1102,7 @@ void TTvdVideoDecoderImpl::ReleasePictureImpl(
   ReturnTTvdDecodedFrameToPool(std::move(output_it->second.ttvd_decoded_frame));
   decoding_results_.erase(output_it);
   EnsureDecoderOutput();
+  TriggerLazyFramesIfNeeded();
 }
 
 bool TTvdVideoDecoderImpl::ReleaseDecoder() {