MCPcopy Create free account
hub / github.com/Tencent/libpag / MakeMP4Data

Function MakeMP4Data

src/codec/mp4/MP4BoxHelper.cpp:143–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143static std::unique_ptr<ByteData> MakeMP4Data(const VideoSequence* videoSequence, bool includeMdat) {
144 auto mp4Track = MakeMP4Track(videoSequence);
145 if (!mp4Track || mp4Track->len == 0) {
146 return nullptr;
147 }
148
149 BoxParam boxParam;
150 boxParam.tracks = {mp4Track};
151 boxParam.track = mp4Track;
152 boxParam.duration = mp4Track->duration;
153 boxParam.timescale = mp4Track->timescale;
154 boxParam.sequenceNumber = SEQUENCE_NUMBER;
155 boxParam.baseMediaDecodeTime = BASE_MEDIA_DECODE_TIME;
156 boxParam.nalusBytesLen = mp4Track->len;
157 boxParam.videoSequence = videoSequence;
158
159 float sizeFactor = includeMdat ? 1.5f : 0.5f;
160 EncodeStream stream(nullptr,
161 static_cast<uint32_t>(static_cast<float>(mp4Track->len) * sizeFactor));
162 stream.setByteOrder(tgfx::ByteOrder::BigEndian);
163 MP4Generator mp4Generator(boxParam);
164 mp4Generator.ftyp(&stream, true);
165 mp4Generator.moov(&stream, true);
166 mp4Generator.moof(&stream, true);
167 if (includeMdat) {
168 mp4Generator.mdat(&stream, true);
169 }
170 return stream.release();
171}
172
173std::unique_ptr<ByteData> MP4BoxHelper::CovertToMP4(const VideoSequence* videoSequence) {
174 if (!videoSequence->MP4Header) {

Callers 2

CovertToMP4Method · 0.85
WriteMP4HeaderMethod · 0.85

Calls 7

MakeMP4TrackFunction · 0.85
setByteOrderMethod · 0.45
ftypMethod · 0.45
moovMethod · 0.45
moofMethod · 0.45
mdatMethod · 0.45
releaseMethod · 0.45

Tested by

no test coverage detected