FastLED 3.9.15
Loading...
Searching...
No Matches

◆ decodeFrame()

bool fl::third_party::SoftwareMpeg1Decoder::decodeFrame ( )
private

Definition at line 385 of file software_decoder.cpp.hpp.

385 {
386 // The actual frame decoding is handled by pl_mpeg via the callback
387 // This method just updates our Frame objects with the decoded data
388
389 if (!decoderData_->hasNewFrame || !decoderData_->rgbFrameBuffer.get()) {
390 return false;
391 }
392
393 // Calculate timestamp in milliseconds
394 fl::u32 timestampMs = static_cast<fl::u32>(decoderData_->lastFrameTime * 1000.0);
395
396 // Update current frame
397 if (config_.mode == Mpeg1Config::Streaming && !config_.immediateMode && !frameBuffer_.empty()) {
398 fl::u8 bufferIndex = currentFrameIndex_ % config_.bufferFrames;
399 // Create a new Frame using shared_ptr
400 frameBuffer_[bufferIndex] = fl::make_shared<Frame>(decoderData_->rgbFrameBuffer.get(),
401 decoderData_->width,
402 decoderData_->height,
404 timestampMs);
405 lastDecodedIndex_ = bufferIndex;
406 } else {
407 // Create a new frame as shared_ptr (for SingleFrame mode or immediate mode)
408 currentFrame_ = fl::make_shared<Frame>(decoderData_->rgbFrameBuffer.get(),
409 decoderData_->width,
410 decoderData_->height,
412 timestampMs);
413 }
414
416 return true;
417}
fl::vector< fl::shared_ptr< Frame > > frameBuffer_
unsigned char u8
Definition coder.h:132
shared_ptr< T > make_shared(Args &&... args) FL_NOEXCEPT
Definition shared_ptr.h:414

References config_, currentFrame_, currentFrameIndex_, decoderData_, FL_NOEXCEPT, frameBuffer_, lastDecodedIndex_, fl::make_shared(), fl::RGB888, and fl::third_party::Mpeg1Config::Streaming.

Referenced by decodeNextFrame().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: