NAME
MP4WriteSample - Write a track sample
SYNTAX
#include <mp4.h>
bool MP4WriteSample(
MP4FileHandle hFile,
MP4TrackId trackId,
u_int8_t* pBytes,
u_int32_t numBytes,
MP4Duration duration = MP4_INVALID_DURATION,
MP4Duration renderingOffset = 0,
bool isSyncSample = true
);
ARGUMENTS
hFile Specifies the mp4 file to which the operation applies.
trackId
Specifies the track to which the operation applies.
pBytes Pointer to the sample data.
numBytes
The size in bytes of the sample.
duration
The duration for this sample. Caveat: The duration should be in
the track timescale units.
renderingOffset
The rendering offset for this sample. Currently the only media
type that needs this feature is MPEG video. Caveat: The offset
should be in the track timescale units.
isSyncSample
The sync/random access flag for this sample.
RETURN VALUES
Upon success, true (1). Upon an error, false (0).
DESCRIPTION
MP4WriteSample writes the given sample at the end of the specified
track. Currently the library does not support random insertion of
samples into the track timeline. Note that with mp4 there cannot be any
holes or overlapping samples in the track timeline. The last three
arguments give optional sample information.
The value of duration can be given as MP4_INVALID_DURATION if all
samples in the track have the same duration. This can be specified with
MP4AddTrack() and related functions.
Typically for audio none of the optional arguments are needed. MPEG
audio such as MP3 or AAC has a fixed sample duration and every sample
can be accessed at random.
For video, all of the optional arguments could be needed. MPEG video
can be encoded at a variable frame rate, with only occasional random
access points, and with "B frames" which cause the rendering (display)
order of the video frames to differ from the storage/decoding order.
Other media types fall between these two extremes.
SEE ALSO
MP4(3)