MCPcopy Create free account
hub / github.com/IENT/YUView / guessDataFormatFromData

Method guessDataFormatFromData

YUViewLib/src/ffmpeg/AVPacketWrapper.cpp:326–354  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

324}
325
326PacketDataFormat AVPacketWrapper::guessDataFormatFromData()
327{
328 if (this->packetFormat != PacketDataFormat::Unknown)
329 return this->packetFormat;
330
331 auto avpacketData = QByteArray::fromRawData((const char *)(getData()), getDataSize());
332 if (avpacketData.length() < 4)
333 {
334 this->packetFormat = PacketDataFormat::Unknown;
335 return this->packetFormat;
336 }
337
338 // AVPacket data can be in one of two formats:
339 // 1: The raw annexB format with start codes (0x00000001 or 0x000001)
340 // 2: ISO/IEC 14496-15 mp4 format: The first 4 bytes determine the size of the NAL unit followed
341 // by the payload We will try to guess the format of the data from the data in this AVPacket. This
342 // should always work unless a format is used which we did not encounter so far (which is not
343 // listed above) Also I think this should be identical for all packets in a bitstream.
344 if (checkForRawNALFormat(avpacketData, false))
345 this->packetFormat = PacketDataFormat::RawNAL;
346 else if (checkForMp4Format(avpacketData))
347 this->packetFormat = PacketDataFormat::MP4;
348 else if (checkForObuFormat(avpacketData))
349 this->packetFormat = PacketDataFormat::OBU;
350 else if (checkForRawNALFormat(avpacketData, true))
351 this->packetFormat = PacketDataFormat::RawNAL;
352
353 return this->packetFormat;
354}
355
356void AVPacketWrapper::update()
357{

Callers 2

parseAVPacketMethod · 0.80
goToNextPacketMethod · 0.80

Calls 3

checkForRawNALFormatFunction · 0.85
checkForMp4FormatFunction · 0.85
checkForObuFormatFunction · 0.85

Tested by

no test coverage detected