blob: 0d2fc080e644c3cef78ffd3f2814ff4cf403c38e [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MEDIA_MUXERS_MP4_MOVIE_BOX_WRITER_H_
#define MEDIA_MUXERS_MP4_MOVIE_BOX_WRITER_H_
#include "base/sequence_checker.h"
#include "media/base/media_export.h"
#include "media/formats/mp4/fourccs.h"
#include "media/formats/mp4/writable_box_definitions.h"
#include "media/muxers/mp4_box_writer.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
// The file contains the box writer of `moov` and its children.
namespace media {
class Mp4MuxerContext;
class MEDIA_EXPORT Mp4MovieBoxWriter : public Mp4BoxWriter {
public:
Mp4MovieBoxWriter(const Mp4MuxerContext& context,
const mp4::writable_boxes::Movie& box);
~Mp4MovieBoxWriter() override;
Mp4MovieBoxWriter(const Mp4MovieBoxWriter&) = delete;
Mp4MovieBoxWriter& operator=(const Mp4MovieBoxWriter&) = delete;
void Write(BoxByteStream& writer) override;
private:
const mp4::writable_boxes::Movie& movie_box_;
SEQUENCE_CHECKER(sequence_checker_);
};
class MEDIA_EXPORT Mp4MovieHeaderBoxWriter : public Mp4BoxWriter {
public:
Mp4MovieHeaderBoxWriter(const Mp4MuxerContext& context,
const mp4::writable_boxes::MovieHeader& box);
~Mp4MovieHeaderBoxWriter() override;
Mp4MovieHeaderBoxWriter(const Mp4MovieHeaderBoxWriter&) = delete;
Mp4MovieHeaderBoxWriter& operator=(const Mp4MovieHeaderBoxWriter&) = delete;
void Write(BoxByteStream& writer) override;
private:
const mp4::writable_boxes::MovieHeader& movie_header_box_;
SEQUENCE_CHECKER(sequence_checker_);
};
} // namespace media
#endif // MEDIA_MUXERS_MP4_MOVIE_BOX_WRITER_H_